- Проверьте, словарные вершины (множественное число: вершины / вершины) - это то, что вы также называете узлами. Связи между вершинами называются ребрами. Вы перепутали это в своем описании массива.
- Ваш двумерный массив называется "матрицей смежности", и, строго говоря, тот, что на вашем изображении, недопустим, так как отсутствуют несколько значений
- Прежде чем пытаться рассчитать тур Эйлера, вы можете сделать некоторые проверки здравомыслия
Проверка работоспособности
- Проверьте, имеют ли все вершины четную степень
- Проверьте, подключен ли график
Если одна из этих двух проверок не пройдена, ваш график не может содержать тур Эйлера. Иначе, если обе проверки пройдут, ваш граф является эйлеровым.
Например, предоставленный вами график не может содержать тур Эйлера, поскольку N2 и N4 имеют неравномерную степень. . Ваше изображение отличается от предоставленной матрицы смежности (упустив это из виду). График, представленный на основе матрицы смежности, содержит маршрут Эйлера.
Еще следуйте этому рецепту:
Be G = ( V , E ) вашего графа, который связан и содержит только вершины с четной степенью
- Выберите произвольную вершину x из G
- Создание действительного тура Эйлера K1 начиная с x в G (используется только подмножество всех ребер E )
- Удалить все ребра, используемые K1
- Выберите вершину y из K1 , которая все еще имеет степень> 0
- Создайте еще один тур Эйлера Kn , начиная с y из оставшегося подмножества ребер в E
- Повторяйте, пока не будут использованы края
- Теперь вы получите свой тур Эйлера, начав с первого найденного вами тура "sub" -Euler K1 и включив другие маршруты "sub" -Euler, найденные на соответствующих перекрестках
например. учитывая эту матрицу смежности, представляющую G , мы находим в туре Эйлера (с именем H )
V1 V2 V3 V4 V5
V1 0 0 2 0 0
V2 0 0 1 1 2
V3 2 1 0 1 0
V4 0 1 1 0 0
V5 0 2 0 0 0
1.) Старт с V1 = x
2.) K1 = (V1, V3, V1)
3.) Удалите края в K1 из G
Обновлена матрица смежности
V1 V2 V3 V4 V5
V1 0 0 0 0 0
V2 0 0 1 1 2
V3 0 1 0 1 0
V4 0 1 1 0 0
V5 0 2 0 0 0
4.) V3 = y (находится в K1 и имеет степень = 2)
5.) K2 = (3,4,2,3)
3.) Удалить K2 ребер
Обновлена матрица смежности
V1 V2 V3 V4 V5
V1 0 0 0 0 0
V2 0 0 0 0 2
V3 0 0 0 0 0
V4 0 0 0 0 0
V5 0 2 0 0 0
4.) V2 = y (находится в K2 и имеет степень = 2
5.) K3 = (2,5,2)
6.) Все используемые края
7.) Начиная с x = V1 мы строим H
* 1 138 * H * * = 1 139 (1,3
Здесь происходит первое пересечение с другим туром «суб» - Эйлера ( K2 ), и мы включаем его. Таким образом
H = (1,3,4,2
Другое пересечение (с K3 ) мы включаем это тоже
H = (1,3,4,2,5,2
Мы включили весь тур и продолжим тот, на котором мы ранее следовали ( K2 )
H (1,3,4,2,5,2,3
Здесь K2 заканчивается, мы возвращаемся в тур K1 и следуем за ним.
* ** +1171 +1172 * H * * = 1173 (1,3,4,2,5,2,3,1) * +1174 *
Готово. Тур Эйлера найден
Итак, вы видите, что алгоритм, который вы упомянули, на самом деле не может быть реализован простым циклом над массивом. Вам нужно будет хранить некоторую информацию о состоянии того, какие ребра вы уже использовали, и какие «суб» -йлерские туры вы уже нашли.