powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Графы, обход деревьев
7 сообщений из 7, страница 1 из 1
Графы, обход деревьев
    #37857590
Добрый день Уважаемые программисты!

Имеется такая задачка (изображение в аттаче)
Нужно написать ф-цию, входные параметры-имя начального и конечного узла func(node1, node2)

Результатом ф-ции вывод массива последовательных узлов вдоль пути
К примеру: func(1,5) , вывод array(1,2,4,5)

Подскажите плз алгоритм или коды похожих решений задач.
...
Рейтинг: 0 / 0
Графы, обход деревьев
    #37857673
Исходными данными является массив из веток (BRANCH), в которых указаны имя начального узла (NUMNODE) и имя смежного узла (ANUMNODE)
...
Рейтинг: 0 / 0
Графы, обход деревьев
    #37857676
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Баубель Анатолий,

Искомую таблицу в виде двумерного массива предсавте:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
$tree = array(
1 => array(2, 6),
2 => array(1, 3, 4),
3 => array(2),
4 => array(2, 5),
5 => array(4),
6 => array(1, 7, 8),
7 => array(6),
8 => array(6)
);


В тупую пройдитесь рекурсией и найдите самый короткий путь.
...
Рейтинг: 0 / 0
Графы, обход деревьев
    #37857685
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренатсамый короткий путь.для дерева он будет единственный.

--------
а для обычного графа надо реализовать алгоритм Дейкстры.
...
Рейтинг: 0 / 0
Графы, обход деревьев
    #37857719
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Баубель АнатолийПодскажите плз алгоритм

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
функция НайтиПуть(a, b)
{
   цикл по всем подузлам узла a
   {
       если (i = b) вернуть массив из одного элемента "b";

       путь = НайтиПуть(i, b); 
       если (путь != пустой_массив) - добавить в путь спереди элемент "а" и вернуть этот массив; 
   }

   вернуть пустой массив;
}

весь_путь = НайтиПуть(начало, конец);
...
Рейтинг: 0 / 0
Графы, обход деревьев
    #37857733
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но вообще-то если именно для дерева, то лучше иметь структуру со ссылками на родителя и подузлы. Тогда просто берешь конечный узел и топаешь вверх по родителям - вот тебе и путь (только в обратном порядке).

Если вычисление путей требуется в большом количестве в твоих рассчетах, то лучше таки 1 раз модифицировать массивы, добавив эту информацию (она у тебя есть, только в неявном виде). Чтобы потом по 1000 раз не делать сотни лишних ходов при переборе всего дерева.
...
Рейтинг: 0 / 0
Графы, обход деревьев
    #37857938
Спасибо большое за идеи.... Завтра постараюсь релизовать алгоритм
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Графы, обход деревьев
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]