Previous: Введение в пакет graphs, Up: Пакет graphs [Contents][Index]
Создает новый граф с множеством вершин v_list и ребрами e_list.
v_list – список вершин ([v1, v2,..., vn]
) или вершин вместе с метками
([[v1,l1], [v2,l2],..., [vn,ln]]
).
Если n – число вершин, то они будут обозначаться целыми числами от 0 до n-1.
e_list – список ребер вида ([e1, e2,..., em]
) или список ребер вместе с весами
([[e1, w1], ..., [em, wm]]
).
Если directed отлично от false
, то возвращается ориентированный граф.
Пример 1: цикл с тремя вершинами:
(%i1) load ("graphs")$ (%i2) g : create_graph([1,2,3], [[1,2], [2,3], [1,3]])$ (%i3) print_graph(g)$ Graph on 3 vertices with 3 edges. Adjacencies: 3 : 1 2 2 : 3 1 1 : 3 2
Пример 2: цикл с тремя вершинами и весами ребер:
(%i1) load ("graphs")$ (%i2) g : create_graph([1,2,3], [[[1,2], 1.0], [[2,3], 2.0], [[1,3], 3.0]])$ (%i3) print_graph(g)$ Graph on 3 vertices with 3 edges. Adjacencies: 3 : 1 2 2 : 3 1 1 : 3 2
Пример 3: ориентированный граф:
(%i1) load ("graphs")$ (%i2) d : create_graph( [1,2,3,4], [ [1,3], [1,4], [2,3], [2,4] ], 'directed = true)$ (%i3) print_graph(d)$ Digraph on 4 vertices with 4 arcs. Adjacencies: 4 : 3 : 2 : 4 3 1 : 4 3
Возвращает копию графа g.
Возвращает циркулянтный граф граф с параметрами n и d.
Пример:
(%i1) load ("graphs")$ (%i2) g : circulant_graph(10, [1,3])$ (%i3) print_graph(g)$ Graph on 10 vertices with 20 edges. Adjacencies: 9 : 2 6 0 8 8 : 1 5 9 7 7 : 0 4 8 6 6 : 9 3 7 5 5 : 8 2 6 4 4 : 7 1 5 3 3 : 6 0 4 2 2 : 9 5 3 1 1 : 8 4 2 0 0 : 7 3 9 1
Возвращает граф Клебша (Clebsch graph).
Возвращает граф, дополнительный графу g.
Возвращает полный двудольный граф с n+m вершинами.
Возвращает полный граф с n вершинами.
Возвращает ориентированный циклический граф с n вершинами.
Возвращает циклический граф с n вершинами.
Возвращает n-мерный куб.
Возвращает граф додекаэдра.
Возвращает пустой граф с n вершинами.
Возвращает цветочный граф (flower graph) с 4n вершинами.
Пример:
(%i1) load ("graphs")$ (%i2) f5 : flower_snark(5)$ (%i3) chromatic_index(f5); (%o3) 4
Возвращает граф с матрицей смежности A.
Возвращает граф Фручта (Frucht graph).
Возвращает прямое произведение графов g1 и g2.
Пример:
(%i1) load ("graphs")$ (%i2) grid : graph_product(path_graph(3), path_graph(4))$ (%i3) draw_graph(grid)$
Возвращает объединение (сумму) графов g1 и g2.
Возвращает решетку n x m.
Возвращает граф Гротча (Grotzch graph).
Возвращает граф Хейвуда (Heawood graph).
Возвращает граф икосаэдра.
Возвращает граф, состоящий из подмножества вершин V графа g.
Пример:
(%i1) load ("graphs")$ (%i2) p : petersen_graph()$ (%i3) V : [0,1,2,3,4]$ (%i4) g : induced_subgraph(V, p)$ (%i5) print_graph(g)$ Graph on 5 vertices with 5 edges. Adjacencies: 4 : 3 0 3 : 2 4 2 : 1 3 1 : 0 2 0 : 1 4
Возвращает граф двойственный (line graph) графу g.
Создает граф, используя функцию предикат f.
vrt – есть список/множество вкршин или целое число. Если vrt есть целое число, то вершины графа будут целыми от 1 до vrt.
f – функция предикат. Вершины a и b будут
соединены, если f(a,b)=true
.
Если directed не равно false, то граф будет ориентированным.
Пример 1:
(%i1) load("graphs")$ (%i2) g : make_graph(powerset({1,2,3,4,5}, 2), disjointp)$ (%i3) is_isomorphic(g, petersen_graph()); (%o3) true (%i4) get_vertex_label(1, g); (%o4) {1, 2}
Пример 2:
(%i1) load("graphs")$ (%i2) f(i, j) := is (mod(j, i)=0)$ (%i3) g : make_graph(20, f, directed=true)$ (%i4) out_neighbors(4, g); (%o4) [8, 12, 16, 20] (%i5) in_neighbors(18, g); (%o5) [1, 2, 3, 6, 9]
Возвращает граф Мицельского (mycielskian graph) графа g.
Возвращает граф без вершин и ребер.
Возвращает ориентированный путь с n вершинами.
Возвращает путь с n вершинами.
Возвращает граф Петерсена P_{n,d}. Значения по умолчанию для
n и d есть n=5
и d=2
.
Возвращает случайный двудольный граф с a+b
вершинами.
Каждая вершина присутствует с вероятностью p.
Возвращает случайный ориентированный граф с n вершинами. Каждое ребро присутствует с вероятностью p.
Возвращает случайный d-регулярный граф с n вершинами.
Значение по умолчанию для d есть d=3
.
Возвращает случайный граф с n вершинами. Каждое ребро присутствует с вероятностью p.
Возвращает случайный граф с n вершинами и m случайными ребрами.
Возвращает случайную сеть на n вершинах. Каждое ребро присутствует
с вероятностью p и имеет вес в интервале [0,w]
.
Эта функция возвращает список [network, source, sink]
.
Пример:
(%i1) load ("graphs")$ (%i2) [net, s, t] : random_network(50, 0.2, 10.0); (%o2) [DIGRAPH, 50, 51] (%i3) max_flow(net, s, t)$ (%i4) first(%); (%o4) 27.65981397932507
Возвращает случайный полный ориентированный граф (tournament) с n вершинами.
Возвращает случайное дерево с n вершинами.
Возвращает граф Татта (Tutte).
Возвращает неориентированный граф, получаемый заменой ребер ориентированного графа g на неориентированные.
Возвращает колесный граф (wheel graph) с n+1 вершинами.
Возвращает матрицу смежности графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) c5 : cycle_graph(4)$ (%i3) adjacency_matrix(c5); [ 0 1 0 1 ] [ ] [ 1 0 1 0 ] (%o3) [ ] [ 0 1 0 1 ] [ ] [ 1 0 1 0 ]
Возвращает среднюю степень вершин графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) average_degree(grotzch_graph()); 40 (%o2) -- 11
Возвращает (наборы вершин) 2-связных компонент графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : create_graph( [1,2,3,4,5,6,7], [ [1,2],[2,3],[2,4],[3,4], [4,5],[5,6],[4,6],[6,7] ])$ (%i3) biconnected_components(g); (%o3) [[6, 7], [4, 5, 6], [1, 2], [2, 3, 4]]
Возвращает двудольное разложение графа gr или пустой список, если gr не является двудольным.
Пример:
(%i1) load ("graphs")$ (%i2) h : heawood_graph()$ (%i3) [A,B]:bipartition(h); (%o3) [[8, 12, 6, 10, 0, 2, 4], [13, 5, 11, 7, 9, 1, 3]] (%i4) draw_graph(h, show_vertices=A, program=circular)$
Возвращает хроматический индекс графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) p : petersen_graph()$ (%i3) chromatic_index(p); (%o3) 4
Возвращает хроматическое число графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) chromatic_number(cycle_graph(5)); (%o2) 3 (%i3) chromatic_number(cycle_graph(6)); (%o3) 2
Удаляет вес ребра e в графе gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : create_graph(3, [[[0,1], 1.5], [[1,2], 1.3]])$ (%i3) get_edge_weight([0,1], g); (%o3) 1.5 (%i4) clear_edge_weight([0,1], g)$ (%i5) get_edge_weight([0,1], g); (%o5) 1
Удаляет метку вершины v в графе gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : create_graph([[0,"Zero"], [1, "One"]], [[0,1]])$ (%i3) get_vertex_label(0, g); (%o3) Zero (%i4) clear_vertex_label(0, g); (%o4) done (%i5) get_vertex_label(0, g); (%o5) false
Возвращает (наборы вершин) компоненты связности графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) g: graph_union(cycle_graph(5), path_graph(4))$ (%i3) connected_components(g); (%o3) [[1, 2, 3, 4, 0], [8, 7, 6, 5]]
Возвращает диаметр графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) diameter(dodecahedron_graph()); (%o2) 5
Возвращает оптимальную раскраску ребер графа gr.
Эта функция возвращает хроматический индекс и список, представляющий раскраску ребер графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) p : petersen_graph()$ (%i3) [ch_index, col] : edge_coloring(p); (%o3) [4, [[[0, 5], 3], [[5, 7], 1], [[0, 1], 1], [[1, 6], 2], [[6, 8], 1], [[1, 2], 3], [[2, 7], 4], [[7, 9], 2], [[2, 3], 2], [[3, 8], 3], [[5, 8], 2], [[3, 4], 1], [[4, 9], 4], [[6, 9], 3], [[0, 4], 2]]] (%i4) assoc([0,1], col); (%o4) 1 (%i5) assoc([0,5], col); (%o5) 3
Возвращает список степеней вершин графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) degree_sequence(random_graph(10, 0.4)); (%o2) [3, 3, 3, 4, 4, 4, 5, 5, 6, 7]
Возвращает список ребер/дуг ориентированного или неориентированного графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) edges(complete_graph(4)); (%o2) [[2, 3], [1, 3], [1, 2], [0, 3], [0, 2], [0, 1]]
Возвращает вес ребра e графа gr.
Если вес не присвоен ребру, то возвращается 1. Если ребро в графе отсутствует, то выдается ошибка или возвращает необязательный аргумент ifnot.
Пример:
(%i1) load ("graphs")$ (%i2) c5 : cycle_graph(5)$ (%i3) get_edge_weight([1,2], c5); (%o3) 1 (%i4) set_edge_weight([1,2], 2.0, c5); (%o4) done (%i5) get_edge_weight([1,2], c5); (%o5) 2.0
Возвращает метку вершины v графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : create_graph([[0,"Zero"], [1, "One"]], [[0,1]])$ (%i3) get_vertex_label(0, g); (%o3) Zero
Возвращает характеристический многочлен (от переменной x) графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) p : petersen_graph()$ (%i3) graph_charpoly(p, x), factor; 5 4 (%o3) (x - 3) (x - 1) (x + 2)
Возвращает центр графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : grid_graph(5,5)$ (%i3) graph_center(g); (%o3) [12]
Возвращает собственные значения графа gr. Значение возвращаются
в том же формате, что возвращает Maxima функция eigenvalue
.
Пример:
(%i1) load ("graphs")$ (%i2) p : petersen_graph()$ (%i3) graph_eigenvalues(p); (%o3) [[3, - 2, 1], [1, 4, 5]]
Возвращает периферию графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : grid_graph(5,5)$ (%i3) graph_periphery(g); (%o3) [24, 20, 4, 0]
Возвращает число вершин в графе gr.
Пример:
(%i1) load ("graphs")$ (%i2) p : petersen_graph()$ (%i3) graph_size(p); (%o3) 10
Возвращает число ребер в графе gr.
Пример:
(%i1) load ("graphs")$ (%i2) p : petersen_graph()$ (%i3) graph_order(p); (%o3) 15
Возвращает длину наикратчайшего цикла в графе gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : heawood_graph()$ (%i3) girth(g); (%o3) 5
Возвращает гамильтонов цикл графа gr или пустой список, если граф gr не является гамильтоновым.
Пример:
(%i1) load ("graphs")$ (%i2) c : cube_graph(3)$ (%i3) hc : hamilton_cycle(c); (%o3) [7, 3, 2, 6, 4, 0, 1, 5, 7] (%i4) draw_graph(c, show_edges=vertices_to_cycle(hc))$
Возвращает гамильтонов путь графа gr или пустой список, если граф gr не имеет гамильтонова пути.
Пример:
(%i1) load ("graphs")$ (%i2) p : petersen_graph()$ (%i3) hp : hamilton_path(p); (%o3) [0, 5, 7, 2, 1, 6, 8, 3, 4, 9] (%i4) draw_graph(p, show_edges=vertices_to_path(hp))$
Возвращает хэш-таблицу изоморфизма между (ориентированными) графами
gr1 и gr2. Если gr1 и gr2 не изоморфны,
то возвращается false
.
Пример:
(%i1) load ("graphs")$ (%i2) clk5:complement_graph(line_graph(complete_graph(5)))$ (%i3) hash_table_data(isomorphism(clk5, petersen_graph())); (%o3) [8 -> 9, 7 -> 8, 4 -> 7, 3 -> 6, 1 -> 5, 0 -> 4, 5 -> 3, 6 -> 2, 2 -> 1, 9 -> 0]
Возвращает список входящих соседей (in-neighbors) вершины v ориентированного графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) p : path_digraph(3)$ (%i3) in_neighbors(2, p); (%o3) [1] (%i4) out_neighbors(2, p); (%o4) []
Возвращает true
, если граф gr 2-связный, и false
в противном случае.
Пример:
(%i1) load ("graphs")$ (%i2) is_biconnected(cycle_graph(5)); (%o2) true (%i3) is_biconnected(path_graph(5)); (%o3) false
Возвращает true
, если граф gr двудольный, и false
в противном случае.
Пример:
(%i1) load ("graphs")$ (%i2) is_bipartite(petersen_graph()); (%o2) false (%i3) is_bipartite(heawood_graph()); (%o3) true
Возвращает true
, если граф gr связный, и false
в противном случае.
Пример:
(%i1) load ("graphs")$ (%i2) is_connected(graph_union(cycle_graph(4), path_graph(3))); (%o2) false
Возвращает true
, если gr является ориентированным графом, и false
в противном случае.
Пример:
(%i1) load ("graphs")$ (%i2) is_digraph(path_graph(5)); (%o2) false (%i3) is_digraph(path_digraph(5)); (%o3) true
Возвращает true
, если e есть ребро (ориентированного) графа g,
и false
в противном случае.
Пример:
(%i1) load ("graphs")$ (%i2) c4 : cycle_graph(4)$ (%i3) is_edge_in_graph([2,3], c4); (%o3) true (%i4) is_edge_in_graph([3,2], c4); (%o4) true (%i5) is_edge_in_graph([2,4], c4); (%o5) false (%i6) is_edge_in_graph([3,2], cycle_digraph(4)); (%o6) false
Возвращает true
, если gr является графом,
и false
в противном случае.
Пример:
(%i1) load ("graphs")$ (%i2) is_graph(path_graph(5)); (%o2) true (%i3) is_graph(path_digraph(5)); (%o3) false
Возвращает true
, если gr является графом или ориентированным графом, и false
в противном случае.
Пример:
(%i1) load ("graphs")$ (%i2) is_graph_or_digraph(path_graph(5)); (%o2) true (%i3) is_graph_or_digraph(path_digraph(5)); (%o3) true
Возвращает true
, если (ориентированные) графы gr1 и gr2 изоморфны,
и false
в противном случае.
См. также isomorphism
.
Пример:
(%i1) load ("graphs")$ (%i2) clk5:complement_graph(line_graph(complete_graph(5)))$ (%i3) is_isomorphic(clk5, petersen_graph()); (%o3) true
Возвращает true
, если gr является планарным графом, и false
в противном случае.
Используется алгоритм Демукрона, который является квадратичным по времени.
Пример:
(%i1) load ("graphs")$ (%i2) is_planar(dodecahedron_graph()); (%o2) true (%i3) is_planar(petersen_graph()); (%o3) false (%i4) is_planar(petersen_graph(10,2)); (%o4) true
Возвращает true
, если ориентированный граф gr является сильно связным,
и false
в противном случае.
Пример:
(%i1) load ("graphs")$ (%i2) is_sconnected(cycle_digraph(5)); (%o2) true (%i3) is_sconnected(path_digraph(5)); (%o3) false
Возвращает true
, если v есть вершина в графе g, и false
в противном случае.
Пример:
(%i1) load ("graphs")$ (%i2) c4 : cycle_graph(4)$ (%i3) is_vertex_in_graph(0, c4); (%o3) true (%i4) is_vertex_in_graph(6, c4); (%o4) false
Возвращает true
, если граф gr является деревом, и false
в противном случае.
Пример:
(%i1) load ("graphs")$ (%i2) is_tree(random_tree(4)); (%o2) true (%i3) is_tree(graph_union(random_tree(4), random_tree(5))); (%o3) false
Возвращает матрицу Лапласа графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) laplacian_matrix(cycle_graph(5)); [ 2 - 1 0 0 - 1 ] [ ] [ - 1 2 - 1 0 0 ] [ ] (%o2) [ 0 - 1 2 - 1 0 ] [ ] [ 0 0 - 1 2 - 1 ] [ ] [ - 1 0 0 - 1 2 ]
Возвращает максимальную клику графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : random_graph(100, 0.5)$ (%i3) max_clique(g); (%o3) [2, 6, 13, 17, 21, 23, 31, 62, 65]
Возвращает максимальную степень вершины графа gr и саму вершину с максимальной степенью.
Пример:
(%i1) load ("graphs")$ (%i2) g : random_graph(100, 0.02)$ (%i3) max_degree(g); (%o3) [6, 70] (%i4) vertex_degree(95, g); (%o4) 3
Возвращает максимальный поток через сеть net с истоком s и стоком t.
Функция возвращает значение максимального потока и список весов ребер оптимального потока.
Пример:
(%i1) load ("graphs")$ (%i2) net : create_graph( [1,2,3,4,5,6], [[[1,2], 1.0], [[1,3], 0.3], [[2,4], 0.2], [[2,5], 0.3], [[3,4], 0.1], [[3,5], 0.1], [[4,6], 1.0], [[5,6], 1.0]], directed=true)$ (%i3) [flow_value, flow] : max_flow(net, 1, 6); (%o3) [0.7, [[[1, 2], 0.5], [[1, 3], 0.2], [[2, 4], 0.2], [[2, 5], 0.3], [[3, 4], 0.1], [[3, 5], 0.1], [[4, 6], 0.3], [[5, 6], 0.4]]] (%i4) fl : 0$ (%i5) for u in out_neighbors(1, net) do fl : fl + assoc([1, u], flow)$ (%i6) fl; (%o6) 0.7
Возвращает максимальное независимое множество графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) d : dodecahedron_graph()$ (%i3) mi : max_independent_set(d); (%o3) [0, 3, 5, 9, 10, 11, 18, 19] (%i4) draw_graph(d, show_vertices=mi)$
Возвращает максимальный набор ребер, не имеющих общих вершин (maximal matching), для графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) d : dodecahedron_graph()$ (%i3) m : max_matching(d); (%o3) [[1, 2], [3, 4], [0, 15], [11, 16], [12, 17], [13, 18], [14, 19], [6, 10], [8, 9], [5, 7]] (%i4) draw_graph(d, show_edges=m)$
Возвращает минимальную степень вершины графа gr и саму вершину с минимальной степенью.
Пример:
(%i1) load ("graphs")$ (%i2) g : random_graph(100, 0.1)$ (%i3) min_degree(g); (%o3) [4, 83] (%i4) vertex_degree(21, g); (%o4) 12
Возвращает минимальное вершинное покрытие графа gr.
Возвращает минимальный каркас (минимальное остовное дерево) графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : graph_product(path_graph(10), path_graph(10))$ (%i3) t : minimum_spanning_tree(g)$ (%i4) draw_graph(g, show_edges=edges(t))$
Возвращает список соседей вершины v в графе gr.
Пример:
(%i1) load ("graphs")$ (%i2) p : petersen_graph()$ (%i3) neighbors(3, p); (%o3) [4, 8, 2]
Возвращает длину наикратчайшего нечетного цикла в графе gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : graph_product(cycle_graph(4), cycle_graph(7))$ (%i3) girth(g); (%o3) 4 (%i4) odd_girth(g); (%o4) 7
Возвращает список исходящих соседей (out-neighbors) вершины v ориентированного графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) p : path_digraph(3)$ (%i3) in_neighbors(2, p); (%o3) [1] (%i4) out_neighbors(2, p); (%o4) []
Возвращает список поверхностных маршрутов (facial walks) в плоской укладке графа gr,
и false
, если граф gr не является планарным.
Граф gr должен быть бисвязным.
Используется алгоритм Демукрона, который является квадратичным по времени.
Пример:
(%i1) load ("graphs")$ (%i2) planar_embedding(grid_graph(3,3)); (%o2) [[3, 6, 7, 8, 5, 2, 1, 0], [4, 3, 0, 1], [3, 4, 7, 6], [8, 7, 4, 5], [1, 2, 5, 4]]
Выводит некоторую информацию о графе gr.
Пример:
(%i1) load ("graphs")$ (%i2) c5 : cycle_graph(5)$ (%i3) print_graph(c5)$ Graph on 5 vertices with 5 edges. Adjacencies: 4 : 0 3 3 : 4 2 2 : 3 1 1 : 2 0 0 : 4 1 (%i4) dc5 : cycle_digraph(5)$ (%i5) print_graph(dc5)$ Digraph on 5 vertices with 5 arcs. Adjacencies: 4 : 0 3 : 4 2 : 3 1 : 2 0 : 1 (%i6) out_neighbors(0, dc5); (%o6) [1]
Возвращает радиус графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) radius(dodecahedron_graph()); (%o2) 5
Присваивает вес w ребру e графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : create_graph([1, 2], [[[1,2], 1.2]])$ (%i3) get_edge_weight([1,2], g); (%o3) 1.2 (%i4) set_edge_weight([1,2], 2.1, g); (%o4) done (%i5) get_edge_weight([1,2], g); (%o5) 2.1
Присваивает метку l вершине v графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : create_graph([[1, "One"], [2, "Two"]], [[1,2]])$ (%i3) get_vertex_label(1, g); (%o3) One (%i4) set_vertex_label(1, "oNE", g); (%o4) done (%i5) get_vertex_label(1, g); (%o5) oNE
Возвращает кратчайший путь из вершины u в вершину v в графе gr.
Пример:
(%i1) load ("graphs")$ (%i2) d : dodecahedron_graph()$ (%i3) path : shortest_path(0, 7, d); (%o3) [0, 1, 19, 13, 7] (%i4) draw_graph(d, show_edges=vertices_to_path(path))$
Возвращает сильную компоненту ориентированного графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) t : random_tournament(4)$ (%i3) strong_components(t); (%o3) [[2], [0], [1], [3]] (%i4) vertex_out_degree(3, t); (%o4) 2
Возвращает топологическую сортировку вершин ориентированного графа dag, или пустой список, если dag не является ориентированным ациклическим графом.
Пример:
(%i1) load ("graphs")$ (%i2) g:create_graph( [1,2,3,4,5], [ [1,2], [2,5], [5,3], [5,4], [3,4], [1,3] ], directed=true)$ (%i3) topological_sort(g); (%o3) [1, 2, 5, 3, 4]
Возвращает степень вершины v в графе gr.
Возвращает длину кратчайшего пути между вершинами u и v в (ориентированном) графе gr.
Пример:
(%i1) load ("graphs")$ (%i2) d : dodecahedron_graph()$ (%i3) vertex_distance(0, 7, d); (%o3) 4 (%i4) shortest_path(0, 7, d); (%o4) [0, 1, 19, 13, 7]
Возвращает эксцентриситет вершины v графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) g:cycle_graph(7)$ (%i3) vertex_eccentricity(0, g); (%o4) 3
Возвращает входящую степень вершины v ориентированного графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) p5 : path_digraph(5)$ (%i3) print_graph(p5)$ Digraph on 5 vertices with 4 arcs. Adjacencies: 4 : 3 : 4 2 : 3 1 : 2 0 : 1 (%i4) vertex_in_degree(4, p5); (%o4) 1 (%i5) in_neighbors(4, p5); (%o5) [3]
Возвращает исходящую степень вершины v ориентированного графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) t : random_tournament(10)$ (%i3) vertex_out_degree(0, t); (%o3) 6 (%i4) out_neighbors(0, t); (%o4) [9, 6, 4, 3, 2, 1]
Возвращает список вершин графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) vertices(complete_graph(4)); (%o2) [3, 2, 1, 0]
Добавляет ребро e к графу gr.
Пример:
(%i1) load ("graphs")$ (%i2) p : path_graph(4)$ (%i3) neighbors(0, p); (%o3) [1] (%i4) add_edge([0,3], p); (%o4) done (%i5) neighbors(0, p); (%o5) [3, 1]
Добавляет ребра из списка e_list к графу gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : empty_graph(3)$ (%i3) add_edges([[0,1],[1,2]], g)$ (%i4) print_graph(g)$ Graph on 3 vertices with 2 edges. Adjacencies: 2 : 1 1 : 2 0 0 : 1
Добавляет вершину v к графу gr.
Пример:
(%i1) load ("graphs")$ (%i2) g : path_graph(2)$ (%i3) add_vertex(2, g)$ (%i4) print_graph(g)$ Graph on 3 vertices with 1 edges. Adjacencies: 2 : 1 : 0 0 : 1
Добавляет все вершины из списка v_list к графу gr.
Соединяет все вершины из списка v_list с вершинами из списка u_list в графе gr.
v_list и u_list могут быть отдельными вершинами или списками вершин.
Пример:
(%i1) load ("graphs")$ (%i2) g : empty_graph(4)$ (%i3) connect_vertices(0, [1,2,3], g)$ (%i4) print_graph(g)$ Graph on 4 vertices with 3 edges. Adjacencies: 3 : 0 2 : 0 1 : 0 0 : 3 2 1
Стягивает ребро e в графе gr.
Пример:
(%i1) load ("graphs")$ (%i2) g: create_graph( 8, [[0,3],[1,3],[2,3],[3,4],[4,5],[4,6],[4,7]])$ (%i3) print_graph(g)$ Graph on 8 vertices with 7 edges. Adjacencies: 7 : 4 6 : 4 5 : 4 4 : 7 6 5 3 3 : 4 2 1 0 2 : 3 1 : 3 0 : 3 (%i4) contract_edge([3,4], g)$ (%i5) print_graph(g)$ Graph on 7 vertices with 6 edges. Adjacencies: 7 : 3 6 : 3 5 : 3 3 : 5 6 7 2 1 0 2 : 3 1 : 3 0 : 3
Удаляет ребро e из графа gr.
Пример:
(%i1) load ("graphs")$ (%i2) c3 : cycle_graph(3)$ (%i3) remove_edge([0,1], c3)$ (%i4) print_graph(c3)$ Graph on 3 vertices with 2 edges. Adjacencies: 2 : 0 1 1 : 2 0 : 2
Удаляет вершину v из графа gr.
Возвращает оптимальную раскраску вершин графа gr.
Функция возвращает хроматическое число и список, описывающий раскраску вершин графа g.
Пример:
(%i1) load ("graphs")$ (%i2) p:petersen_graph()$ (%i3) vertex_coloring(p); (%o3) [3, [[0, 2], [1, 3], [2, 2], [3, 3], [4, 1], [5, 3], [6, 1], [7, 1], [8, 2], [9, 2]]]
Экспортирует граф в файл fl в формате DIMACS. Необязательный комментарий будет добавлен к началу файла.
Возвращает граф из файла fl, в котором он записан в формате DIMACS.
Возвращает граф, закодированный в формате graph6 в строке str.
Возвращает строку – закодированное представление графа gr в формате graph6.
Экспортирует графы из списка gr_list в файл fl в формате graph6.
Возвращает список графов из файла fl, где они закодированы в формате graph6.
Возвращает граф, закодированный в формате sparse6 в строке str.
Возвращает строку – закодированное представление графа gr в формате sparse6.
Экспортирует графы из списка gr_list в файл fl в формате sparse6.
Возвращает список графов из файла fl, где они закодированы в формате sparse6.
Изображает граф с помощью пакета draw
.
Алгоритм, используемый для размещения вершин, определяется необязательной переменной program.
Значение по умолчанию program=spring_embedding
.
Может также использоваться программа graphviz, но она должна быть установлена отдельно.
Необязательные аргументы draw_graph могут быть:
left
, center
или right
.
По умолчанию left
.
draw
.
draw
.
[[v1,v2,...],...,[vk,...,vn]]
вершин графа.
Вершины в каждом списка будут изображаться разными цветами.
draw
.
draw
.
[[e1,e2,...],...,[ek,...,em]]
ребер графа. Ребра в каждом списке
будут изображаться разными цветами.
true
, то положение вершин
вычисляется снова, даже если оно было сохранено с предыдущего изображения
графа.
draw
).
program=spring_embedding
, то набор
вершин с фиксированным расположением может быть задан с помощью опции
fixed_vertices.
program=spring_embedding
.
Пример 1:
(%i1) load ("graphs")$ (%i2) g:grid_graph(10,10)$ (%i3) m:max_matching(g)$ (%i4) draw_graph(g, spring_embedding_depth=100, show_edges=m, edge_type=dots, vertex_size=0)$
Пример 2:
(%i1) load ("graphs")$ (%i2) g:create_graph(16, [ [0,1],[1,3],[2,3],[0,2],[3,4],[2,4], [5,6],[6,4],[4,7],[6,7],[7,8],[7,10],[7,11], [8,10],[11,10],[8,9],[11,12],[9,15],[12,13], [10,14],[15,14],[13,14] ])$ (%i3) t:minimum_spanning_tree(g)$ (%i4) draw_graph( g, show_edges=edges(t), show_edge_width=4, show_edge_color=green, vertex_type=filled_square, vertex_size=2 )$
Пример 3:
(%i1) load ("graphs")$ (%i2) g:create_graph(16, [ [0,1],[1,3],[2,3],[0,2],[3,4],[2,4], [5,6],[6,4],[4,7],[6,7],[7,8],[7,10],[7,11], [8,10],[11,10],[8,9],[11,12],[9,15],[12,13], [10,14],[15,14],[13,14] ])$ (%i3) mi : max_independent_set(g)$ (%i4) draw_graph( g, show_vertices=mi, show_vertex_type=filled_up_triangle, show_vertex_size=2, edge_color=cyan, edge_width=3, show_id=true, text_color=brown )$
Пример 4:
(%i1) load ("graphs")$ (%i2) net : create_graph( [0,1,2,3,4,5], [ [[0,1], 3], [[0,2], 2], [[1,3], 1], [[1,4], 3], [[2,3], 2], [[2,4], 2], [[4,5], 2], [[3,5], 2] ], directed=true )$ (%i3) draw_graph( net, show_weight=true, vertex_size=0, show_vertices=[0,5], show_vertex_type=filled_square, head_length=0.2, head_angle=10, edge_color="dark-green", text_color=blue )$
Значение по умолчанию: spring_embedding.
Значение по умолчанию, которое используется для расположения вершин в программе draw_graph
.
Преобразует список вершин v_list в список ребер пути, определяемого списком v_list.
Преобразует список вершин v_list в список ребер цикла, определяемого списком v_list.
Previous: Введение в пакет graphs, Up: Пакет graphs [Contents][Index]