On Tue, Jan 31, 2023 at 4:59 PM Shiyue Li <shiyue...@brown.edu> wrote:
>
> I agree that I don’t want isolated vertices. But putting “-c” would eliminate 
> all graphs of the given edge size n that have more than 1 connected 
> components. I would still want to consider those. For example, a tree of 4 
> edges together with a disjoint edge is a graph that I want for n = 5.
For n=5 it's

[list(graphs.nauty_geng(str(n)+" 5:5")) for n in range(4,11)]

In general, if  e is the number of edges, n should vary from min(n:
n(n-1)>=2e) to 2e.


>
> Would there be a simpler way of doing this?
>
> One way is List(graphs.nauty_geng(str(2*n) + “ n:n”)).
>
> The reason for the 2*n is because the maximum number of vertices a (possibly 
> disconnected, without isolated vertices) graph can possess is 2*n.
>
> But this is still slower than I desired as n = 8, for example.
>
>
>
>
>
> On Tue, Jan 31, 2023 at 9:24 AM Dima Pasechnik <dimp...@gmail.com> wrote:
>>
>> There are infinitely many graphs with n edges (just keep throwing in
>> more isolated vertices)
>> That is, you basically  need to restrict to connected ones only (as a
>> variation, only ones without isolated vertices).
>>
>>     sage: graphs.nauty_geng?
>>
>> will tell you
>>
>>    The possible options, obtained as output of "geng --help":
>>
>>            n       : the number of vertices
>>       mine:maxe    : <int>:<int> a range for the number of edges
>>                       <int>:0 means '<int> or more' except in the case 0:0
>>
>> that 2nd positional parameter to pass can be used to say how many
>> edges you need. E.g.
>>
>>
>> sage: [list(graphs.nauty_geng(str(n)+" 5:5 -c")) for n in range(4,7)]
>> [[Graph on 4 vertices],
>>  [Graph on 5 vertices,
>>   Graph on 5 vertices,
>>   Graph on 5 vertices,
>>   Graph on 5 vertices,
>>   Graph on 5 vertices],
>>  [Graph on 6 vertices,
>>   Graph on 6 vertices,
>>   Graph on 6 vertices,
>>   Graph on 6 vertices,
>>   Graph on 6 vertices,
>>   Graph on 6 vertices]]
>>
>> lists all connected graphs with exactly 5 edges.
>>
>> HTH
>> Dima
>>
>> On Tue, Jan 31, 2023 at 1:52 PM Shiyue Li <shiyue...@brown.edu> wrote:
>> >
>> > Thank you.  Do you know what is an efficient way of getting these 
>> > non-isomorphic graphs with n edges?
>> >
>> > Using your answer. I can use nauty_geng(2 * n), and then filter out all 
>> > the graphs with n edges. But even going through nauty_geng(2*n) is more 
>> > memory and spaces needed.
>> >
>> >
>> > On Tuesday, January 31, 2023 at 6:49:03 AM UTC-5 dim...@gmail.com wrote:
>> > On Tue, Jan 31, 2023 at 2:38 AM Shiyue Li <shiy...@brown.edu> wrote:
>> > >
>> > > Hi all,
>> > >
>> > > I am hoping to generate a list of all graph isomorphism classes of a 
>> > > given size. The current code that I have first generate all the graphs 
>> > > on 2n, and then take all the isomorphism class representatives of size 
>> > > n. But the first step of generating all graphs on 2n vertices can take a 
>> > > really long time and huge amount of memory (run 10 days on my 
>> > > university's research computing cloud) and crashes.
>> > >
>> > > See the following for my code:
>> > >
>> > > def iso_graphs(n):
>> > > '''returns all isomorphism classes of simple graphs on n edges on 2*n 
>> > > vertices'''
>> > > L = list(graphs(2 * n, loops=False, size=n)) print("Do we ever reach 
>> > > this point?")
>> > > L = [G.canonical_label().copy(immutable=True) for G in L if G.size() == 
>> > > n]
>> > > return L
>> > >
>> > > I wonder if what is a correct and efficient way of doing it.
>> >
>> > We have a function to do this job very efficently:
>> >
>> > graphs.nauty_geng()
>> >
>> > it generates non-isomorphic graphs. E.g. list(graphs.nauty_geng("3
>> > -c")) gives you the complete list
>> > (of lengh 2) of all non-isomrphic connected graphs on 3 vertices
>> > (remove "-c" there if you want all graphs,
>> > not only connected)
>> >
>> > HTH
>> > Dima
>> >
>> > >
>> > > Thanks!
>> > >
>> > > --
>> > > You received this message because you are subscribed to the Google 
>> > > Groups "sage-support" group.
>> > > To unsubscribe from this group and stop receiving emails from it, send 
>> > > an email to sage-support...@googlegroups.com.
>> > > To view this discussion on the web visit 
>> > > https://groups.google.com/d/msgid/sage-support/0acb6537-3fe9-42dc-ab1b-c5c79dd5fb5cn%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/CAAWYfq1GfdhMd600RASkSmGD8t3qMgR6uwpfM9EWbPLcCuiThg%40mail.gmail.com.

Reply via email to