Ask Your Question

can we use BFS and DFS algorithm in sagemath?

asked 2019-01-09 12:18:58 +0200

Nagarjun gravatar image

hello, I want to color the vertices of graphs using greedy or BFS algorithm. can do that in sagemath?

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2019-01-11 01:34:48 +0200

tmonteil gravatar image

updated 2019-01-11 01:35:38 +0200

You can do BFS and DFS as follows:

sage: G = graphs.PetersenGraph()
sage: G.plot()
sage: list(G.breadth_first_search(start=3))
[3, 2, 4, 8, 1, 7, 0, 9, 5, 6]
sage: list(G.depth_first_search(start=3))
[3, 8, 6, 9, 7, 5, 0, 4, 1, 2]

What you get is the ordered list of vertices visited in both searches, starting from vertex 3.

Regarding coloring, i am not sure about your exact question. If you want to provide colors to the vertices to show the order of visit, you can try somthing like:

sage: G.plot(vertex_colors={rainbow(40)[i]:[v] for i,v in enumerate(G.breadth_first_search(start=3))})

With more striking example:

sage: G = graphs.Grid2dGraph(10,10)
sage: G.plot()
sage: G.plot(vertex_colors={rainbow(500)[i]:[v] for i,v in enumerate(G.breadth_first_search(start=(0,0)))})
sage: sage: G.plot(vertex_colors={rainbow(500)[i]:[v] for i,v in enumerate(G.depth_first_search(start=(0,0)))})
edit flag offensive delete link more

answered 2019-01-10 19:58:26 +0200

slelievre gravatar image

updated 2019-01-10 20:02:54 +0200

In SageMath, if you define a graph G (for example G = Graph()), then G.coloring? gives the documentation of the coloring method for G, and G.coloring?? gives the source code.

Reading the documentation reveals two choices are offered: using the "dancing link algorithm" or using "mixed linear integer programming".

See also SageMath documentation for graph coloring.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools


Asked: 2019-01-09 12:18:58 +0200

Seen: 837 times

Last updated: Jan 11 '19