На мой сайт есть много статей, посвященных моему вопросу. У меня есть матрица, например (10 x 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 Узел 2: 2, 9, 7, 8, 10, 3, 2. Это означает, что MyMat (2,1) должен быть 0
Узел 3: Нет цикл
Узел 4: 4, 7, 8, 4. Это означает, что MyMat (7,3) должно быть равно 0
Узел 5: 5, 8, 10, 6, 5. Это означает, что MyMat (5,4) должно быть 0
Узел 6: Нет Loop
Узел 7: Нет Loop
Узел 8: Нет Петля
Узел 9: Нет Петля
Узла 10: Нет петлю
-соединения были удалены из матрицы выше.
Я сделал это с помощью метода под названием Глубина первого поиска, но он очень медленный и нагрузка на время работы моей программы, особенно когда я использую 60 узлов и 100 соединений! Несколько примеров программирования можно найти, если вы Google это.
Есть ли более простой (быстрый) способ для этого в визуальном базовом или C#?
HI Спасибо за ваш ответ. Не могли бы вы продемонстрировать свой ответ моим примером? Т. Е. Используя матрицу ребер и узлов, как я описал в своем вопросе. Благодаря –
я попытался это, но не работает, пожалуйста, советы LinkToSource (0) GreyList.Add (0) Public Function LinkToSource (ByVal Fromnode As Integer) As Double Для я = 0 до 9 Если Matt (Fromnode, я)> 0 Тогда Если GreyList.Contains (I) Тогда Если не BlackList.Contains (я) Тогда Matt (Fromnode, я) = 0 BlackList.Add (я) BlackList.Add (Fromnode) Конец Если Else GreyList.Add (i) LinkToS ource (i) End If End If Next i End Function –