На этом сайте много статей по моему вопросу.У меня есть матрица, например (10 х 10), которая представляет 10 узлов.Матрица называется MyMat (9,9)
. Строки этой матрицы представляют исходный узел (с узла), а столбцы представляют целевой узел (до узла).Он имеет 14 ссылок, которые распределены случайным образом.Ненулевые значения представляют связи между узлами.
0 0 0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0 1 0
0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0 0 1
0 0 0 0 0 0 1 0 0 0
0 1 1 0 0 1 0 0 0 0
Я хочу предотвратить циклы (циклы) для каждого узла в системе.Например: Узел 1: Без цикла
Узел 2: 2, 9, 7, 8, 10, 2. Здесь цикл существует, потому что он начинается с 2 и заканчивается с 2. Что я хочу, чтобы предотвратить циклыв этой сети.Это означает, что: MyMat (9,1) должно быть 0 Node 2: 2, 9, 7, 8, 10, 3, 2. Это означает, что MyMat (2,1) должно быть 0
Node 3:Без цикла
Узел 4: 4, 7, 8, 4. Это означает, что MyMat (7,3) должен быть 0
Узел 5: 5, 8, 10, 6, 5.Это означает, что MyMat (5,4) должно быть 0
Узел 6: без петли
Узел 7: без петли
Узел 8: без петли
Узел 9: без петли
Узел 10: без петли
4 соединения были удалены из вышеуказанной матрицы.
Я сделал это с помощью метода поиска в глубину, но он очень медленный и отягощает время работы моей программы, особенно когда я использую 60 узлов и 100 соединений !!Несколько примеров программирования можно найти в Google.
Есть ли более простой (более быстрый) способ сделать это в Visual Basic или C #?