![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| CENTRALFORWARD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 9.3.2008 Где: Пенза Репутация: нет Всего: нет |
Имеется связный ориентированный граф. Берется любая вершина и необходимо определить все возможные пути из этой вершины. Необходимо вывести все цепочки возможных путей на экран.
Хотелось бы пример. Заранее спасибо. |
|||
|
||||
| pil69 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
А как задается сам граф? В виде матрицы? Пример покажи
|
|||
|
||||
| CENTRALFORWARD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 9.3.2008 Где: Пенза Репутация: нет Всего: нет |
Матрицей смежности |
|||
|
||||
| Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
В подобной теме я привёл пример графа, который представляется матрицей смежности, каркас так же массивом....и + еще как раз в нем реализуется поиск в глубину. Вообщем тебе нужно в цикле сохранять ребра....сам цикл прогоняешь по всей матрице........
________________________________________________ и блин, пожалуйста восстановите мне кто-нибудь репу......хотя бы до 0 |
|||
|
||||
| Naruto05 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 26.4.2008 Репутация: нет Всего: нет |
попробуй использовать поиск в глубину, он быстр и удобен. Там просто каждый раз перед началом или в конце пишешь вывод массива.
{ c:массив, хранящий все пути} {k - счётчик элементов с} Procedure solve(x:word); var i:integer; begin for i:=1 to k do begin write(c[i],' '); end; readln; for i:=1 to n do if (a[x,i]=1)and(b[i]) then begin inc(k);c[k]:=i;b[i]:=false; solve(i); dec(k);b[i]:=true; end; end; a - таблица смежности b - вектор булевского типа. обозначает, просмотрен ли элемент. Я только прикинул процедуру, а там сам дальше разработаешь. |
|||
|
||||
| Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
ОГО!!!
А если у него матрица смежности 50х50......... solve(i); - может быть ты не понял, но если процедура в теле её описания вызывает сама себя, то это уже рекурсия. И получится, что она будет обращаться сама к себе.............щас-щас.............(хотя бы при размере 15х15)............437893890380859375 раз!!! CENTRALFORWARD если не передумал разобраться с этим, то выше приведенный мной пример развеит все опасения...... |
|||
|
||||
| CENTRALFORWARD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 9.3.2008 Где: Пенза Репутация: нет Всего: нет |
Суть понятна, но мне нужен вывод примерно такой:
Условно, матрица 9 на 9 и возможные пути начиная с 9 вершины (без дублирования вершин): 1) 9 2 4 5 2) 9 2 5 3) 9 2 8 7 1 6 5 4) 9 2 8 7 5 5) 9 3 4 5 6) 9 8 7 1 6 5 7) 9 8 7 2 4 5 8) 9 8 7 2 5 9) 9 8 7 5 и т.д. |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |