| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > матрицы достижимостей |
| Автор: MrDmitry 6.4.2015, 20:12 | ||||
| Помогите решить следующее задание Для заданного графа найти матрицы достижимостей и контрадостижимостей произвольной длины, c ограничением длины 5 ребер и с ограничением веса пути 16. Сам граф http://rghost.ru/8cBCnrsc4.view Как я делал. Создал текстовый файл в который занес соединенные ребра 0 0 5 0 0 0 0 0 9 0 0 0 6 0 0 0 0 0 0 7 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 2 2 0 0 0 0 4 0 0 9 0 0 8 0 0 2 0 0 0 0 0 0 0 0 0 0 0 9 0 1 шагом загружаю такую матрицу в stringrid
а дальше проблема вот так пытаюсь составить матрицу достижимости
Собственно конечный результат не правильный ( |
| Автор: MrDmitry 7.4.2015, 17:54 |
| Ни у какого не каких мыслей? Если вы заметили я пытался делать при помощи рекурсии(по крайней мере как я это понимаю), но не вышло... |
| Автор: ФедосеевПавел 7.4.2015, 19:25 | ||
| Мне кажется, что здесь нужна не рекурсия, а модификации метода Флойда-Уоршелла. 1. Для произвольной длины - чистый Ф-У. 2. c ограничением длины 5 ребер. Сделать все веса одинаковыми (и равными 1) и Ф-У. После этого проверить длины (=весам) и те, что длиннее (=тяжелее) 5 удалить из матрицы достижимости. 3. ограничением веса пути 16. После чистого Ф-У проверить оптимальные длины веса и те, что больше 16 - исключить. Флойд-Уоршелл - просто 3 вложенных цикла. Я реализовывал алгоритм по материалам из сети, в частности http://e-maxx.ru/algo/floyd_warshall_algorithm.
Добавлено @ 19:29 1. Для произвольной длины - можно алгоритм Ли (волновой) - разновидность поиска в ширину - Флойд-Уоршелл 2. c ограничением длины 5 ребер - волновой - Флойд-Уоршелл. 3. ограничением веса пути 16 - Флойд-Уоршелл. |