<jupyter_start><jupyter_text>Пример: рисование генеалогического дерева<jupyter_code>family = {0: '<NAME>',
          1: '<NAME>',
          2: '<NAME>',
          3: '<NAME>'}

relations = [(0,2),(1,2),(3,1)]

position = {3:[0,0], 1:[1,0], 0:[1,1], 2:[2,1]}

g = nx.Graph()

g.add_nodes_from(list(family.keys()))
g.add_edges_from(relations)

nx.draw(g, pos=position)

for i, name in family.items():
    plt.text(position[i][0], position[i][1]+0.1, name)<jupyter_output><empty_output><jupyter_text>В дереве есть теща (Г.И.Смирнова), супруги Ивановы и сын Петр. Ребро означает отношение "родитель-потомок". Этот граф можно представить матрицей смежности, в которой будет 1 при отношении "родитель-потомок" и 0 в противоположном случае. Строки и столбцы это вершины графа.<jupyter_code>m = np.array([[0,0,1,0],[0,0,1,0],[0,0,0,0],[0,1,0,0]])
m<jupyter_output><empty_output><jupyter_text>Задачи: 1. Обогатить граф (увеличить количество узлов до 15)2. Написать алгоритм, который находит- все пары "бабушка или дедушка"-"внук или внучка"- всех прадедушек и прабабушек- все пары "зять-теща"- бездетные пары  Разные примеры networkx<jupyter_code>g = nx.Graph()
g.add_nodes_from([(1, {'color':'red'}),(2),(3),(4)])
g.add_edges_from([(1,2),(3,4)])
nx.draw(g)
g.nodes()
g.number_of_edges()
g.number_of_nodes()
g.edges
g.nodes
g.adj
g.degree
g1 = nx.DiGraph()
g1.add_edge(1,2)
g1.add_edge(2,3)
nx.draw(g1)
g = nx.Graph()
g.add_nodes_from([1,2,3])
nx.draw(g)
pos = nx.spring_layout(g, seed=200)
pos
nx.draw(g, pos={1:(1,1), 2:(2,2), 3:(3,3)})
g1 = nx.Graph()

places = dict()

input_layer = range(5)
for i, item_ in enumerate(input_layer):
    places[item_] = [0,i]

hidden_layer = range(5,10)
for i, item_ in enumerate(hidden_layer):
    places[item_] = [1,i]

output_layer = range(10,12)
for i, item_ in enumerate(output_layer):
    places[item_] = [2,i]

for edge_ in product(input_layer, hidden_layer):
    g1.add_edge(*edge_)

for edge_ in product(hidden_layer, output_layer):
    g1.add_edge(*edge_)

    
nx.draw(g1, pos=places, )
g2 = nx.MultiDiGraph()
g2.add_edges_from([(1,2),(2,1)])
nx.draw(g2)
g3 = nx.barbell_graph(5,2)
nx.draw(g3)
nx.draw(nx.lollipop_graph(3,3))
red = nx.random_lobster(10, 0.9, 0.9)
nx.draw(red)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.18672014260249553, 'fraction_numerical': 0.05035650623885918, 'mean_word_length': 5.526162790697675, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '512357', 'license': 'MIT', 'n_tokens_mistral': 1086, 'n_tokens_neox': 1096, 'n_words': 190, 'path': 'NetworkX.ipynb', 'repo_name': 'yurichernyshov/Examples', 'size': '2305'}