Sage Quick Reference: Graph Theory Steven Rafael Turner Sage Version

Sage Quick Reference: Graph Theory Steven Rafael Turner Sage Version

Sage Quick Reference: Graph Theory G.add_vertex(Name of isolated vertex) G.is_eulerian() Steven Rafael Turner G.add_vertices(iterable of vertices) G.is_hamiltonian() Sage Version 4.7 G.delete_edge( v_1, v_2, 'label') G.is_interval() http://wiki.sagemath.org/quickref G.delete_edges(iterable of edges) G.is_independent_set([vertices]) GNU Free Document License, extend for your own use G.delete_multiedge(v_1, v_2) G.is_overfull() G.delete_vertex(v_1) G.is_regular(k) Constructing G.delete_vertices(iterable of vertices) Can test for being k-regular, by default k=None. G.merge_vertices([vertices]) Adjacency Mapping: G=Graph([GF(13), lambda i,j: conditions on i,j]) Common Invariants Input is a list whose first item are vertices and the other Connectivity and Cuts G.diameter() is some adjacency function: [list of vertices, function] G.is_connected() G.average_distance() Adjacency Lists: G.edge_connectivity() G.edge_disjoint_spanning_trees(k) G=Graph({0:[1,2,3], 2:[4]}) G.edge_cut(source, sink G.girth() G=Graph({0:{1:"x",2:"z",3:"a"}, 2:{5:"out"}}) G.blocks_and_cut_vertices() G.size() x, z, a, and out are labels for edges and be used as G.max_cut() G.order() weights. G.edge_disjoint_paths(v1,v2, method='LP') G.radius() Adjacency Matrix: This method can us LP (Linear Programming) or FF A = numpy.array([[0,1,1],[1,0,1],[1,1,0]]) (Ford-Fulkerson) Graph Coloring Don't forget to import numpy for the NumPy matrix vertex_disjoint_paths(v1,v2) G.chromatic_polynomial() or ndarray. G.flow(1,2) G.chromatic_number(algorithm="DLX") M = Matrix([(....), (....), . ]) There are many options to this function please check You can change DLX (dancing links) to CP (chromatic Edge List with or without labels: the documentation. polynomial coefficients) or MILP (mixed integer linear G = Graph([(1,3,"Label"),(3,8,"Or"),(5,2)]) program) Incidence Matrix: Conversions G.coloring(algorithm="DLX") M = Matrix(2, [-1,0,0,0,1, 1,-1,0,0,0]) G.to_directed() You can change DLX to MILP Graph6 Or Sparse6 string G.to_undirected() G.is_perfect(certificate=False) G=':IgMoqoCUOqeb\n:I`EDOAEQ?PccSsge\N\n' G.sparse6_string() graphs_list.from_sparse6(G) G.graph6_string() Above is a list of graphs using sparse6 strings. Planarity NetworkX Graph G.is_planar() Products g = networkx.Graph({0:[1,2,3], 2:[4]}) G.is_circular_planar() DiGraph(g) G.strong_product(H) G.is_drawn_free_of_edge_crossings() g_2 = networkx.MultiGraph({0:[1,2,3], 2:[4]}) G.tensor_product(H) G.layout_planar(test=True, set_embedding=True Graph(g_2) G.categorical_product(H) G.set_planar_positions() Don't forget to import networkx Same as the tensor product. G.disjunctive_product(H) Search and Shortest Path G.lexicographic_product(H) Centrality Measures list(G.depth_first_search([vertices], distance=4) G.cartesian_product(H) G.centrality_betweenness(normalized=False) list(G.breadth_first_search([vertices]) G.centrality_closeness(v=1) dist,pred = graph.shortest_path_all_pairs(by_weight=True, algorithm="auto") G.centrality_degree() Boolean Queries Choice of algorithms: BFS or Floyd-Warshall-Python G.is_tree() G.shortest_path_length(v_1,v_2, by_weight=True G.is_forest() Graph Deletions and Additions G.shortest_path_lengths(v_1) G.is_gallai_tree() G.shortest_path(v_1,v_2) G.add_cycle([vertices]) G.is_interval() G.add_edge(edge) G.is_regular() Spanning Trees G.add_edges(iterable of edges) G.is_chordal() G.add_path G.steiner_tree(g.vertices()[:10]) G.spanning_trees_count() G.clique_number(algorithm="cliquer") G.edge_disjoint_spanning_trees(2, root vertex) cliquer can be replaced with networkx. G.min_spanning_tree(weight_function=somefunction, G.clique_maximum() algorithm='Kruskal',starting_vertex=3) G.clique_complex() Kruskal can be change to Prim fringe, Prim edge, or NetworkX Component Algorithms G.is_connected() Linear Algebra G.connected_component_containing_vertex(vertex) Matrices G.connected_components_number() G.kirchhoff_matrix() G.connected_components_subgraphs() G.laplacian_matrix() G.strong_orientation() Same as the kirchoff matrix G.strongly_connected_components() G.weighted_adjacency_matrix() G.strongly_connected_components_digraph() G.adjacency_matrix() G.strongly_connected_components_subgraphs() G.incidence_matrix() G.strongly_connected_component_containing_vertex(vertex) Operations G.is_strongly_connected() G.characteristic_polynomial() G.cycle_basis() NP Problems G.spectrum() G.vertex_cover(algorithm='Cliquer') G.eigenspaces(laplacian=True) The algorithm can be changed to MILP (mixed integer G.eigenvectors(laplacian=True) linear program. Note that MILP requires packages GLPK or CBC. Automorphism and Isomorphism Related G.hamiltonian_cycle() G.automorphism_group() G.traveling_salesman_problem() G.is_isomorphic(H) G.is_vertex_transitive() G.canonical_label() G.minor(graph of minor to find) Generic Clustering G.cluster_transitivity() G.cluster_triangles() G.clustering_average() G..clustering_coeff(nbunch=[0,1,2],weights=True) Clique Analysis G.is_clique([vertices]) G.cliques_vertex_clique_number(vertices=[(0, 1), (1, 2)],algorithm="networkx") networkx can be replaced with cliquer. G.cliques_number_of() G.cliques_maximum() G.cliques_maximal() G.cliques_get_max_clique_graph() G.cliques_get_clique_bipartite() G.cliques_containing_vertex().

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    2 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us