Исходя из определения графа (туть) можно хранить граф в виде списка вершин и списка ребер. Подобная структура позволяет легко проверить наличие вершины и ребра (A in V ), но задача проверки всех соседей становиться довольно сложной, т.к. нам надо перебрать весь список E и сопоставить его с V. Среди различных способов представления графов выделяют два самых популярных: Оба способа подходят для представления как ориентированных, так и неориентированных графов. Матрица смежности Она подходит для простых графов. Матрица смежности всегда имеет размер |V| x |V| (квадратная): В Python такую структуру легко реализовать как список списков, т.е.: G = [ [0, 1, 1, 1, 0, 0], [1,0, 0, 0, 1, 0] , [1, 0, 0, 1, 1, 0] , [1, 0, 1, 0, 0, 1] , ... ] Особенности такой структуры: · Все петли находятся на главной диагонали. · Если граф не ориентирован, то граф будет симметричен относительно главной диагонали. · Степень вершины – сумма единиц в строке Проверка наличия ребра (соседства двух вершин): -