![]() |
|
|
![]()
|
|
| i... |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 6.5.2003 Репутация: нет Всего: нет |
Помогите, пожалуйста, решить задачу:
"По системе двусторонних дорог определить, можно ли, закрыв какие-нибудь три дороги, добиться того, чтобы из города A нельзя было попасть в город B." |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
1. Если из города А выходят всего три дороги можно перекрыть их.
2. Если в город Б приходят только три дороги можно перекрыть их. 3. А остальные наверное только перебором. Хотя я могу и ошибаться |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: нет Всего: 24 |
Похоже на правду но ещё нужно проверить :
под значимостью ребра будем понимать сумму степеней вершин, к-ые он соединяет. находим путь из A в B и удаляем ребро с максимальной значимостью из этого пути, и так три раза, если после этого путь ещё найден - то нельзя. -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| i... |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 6.5.2003 Репутация: нет Всего: нет |
Посоветуйте, пожалуйста, каким алгоритмом находить путь из А и В. Говорят, что можно найти алгоритмом Форда-Белмана, но я его в глаза не видел. |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
i...
Поищи на форуме в алгоритмах, примеров куча! |
|||
|
||||
| Alex101 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 891 Регистрация: 8.4.2002 Где: Москва Репутация: 1 Всего: 10 |
Алгоритм Дейкстры, тут про него уже говорилось очень много раз. http://program.rin.ru/razdel/html/686.html -------------------- С уважением, А. Фролов. |
|||
|
||||
| 3,14 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: нет Всего: 24 |
Собственно алгоритм Дейкстры здесь не очень нужен, потомучто он предназначен для поиска кратчайшего пути для графов с неотрицательными весами. А нужно путь искать обычным перебором: 1) Помечаем вершину A 2) Смотрим в какую вершину можно попасть из A 3) Если вершина не помечена, то помечаем эту вершину и ищем путь из неё в B 4) Если из этой вершины в B попасть не удалось, то переходим к другой вершине, в к-ую можно попасть из A, помечаем её... -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
||||
|
|||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: 1 Всего: 7 |
Мне кажется, что это классическая задача определения связности.
Лучше всего решение задачки описанио в книженции: "Фундаментальные алгоритмы на С" Роберта Седжевика. -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
что-то ничего кроме перебора в голову не приходит, но...
его можно немного пооптимизировать: 1. находим кратчайший путь A-B 2. удаляем одно из ребер на нем 3. ищем новый кратчайший путь (без удаленного ребра) 4. удаляем одно из его ребер 5. ищем еще один кратчайший путь 6. удаляем одно из его ребер таким образом перебирать нужно не C из n по 3, а несколько меньше перебор получается, когда мы решаем, какое ребро пути удалить кратчайший путь нужен для того, чтобы сократить количество ребер из которого мы выбираем кандидата на удаление к тому же поиск любого пути по сложности практически не отличается от поиска кратчайшего... -------------------- qqq |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
maxim1000
Чета я не понял.... Ну поудаляем мы ребра и что? Нам же нужно найти три такие дороги перекрыв которые мы полностью отризаем А от Б. Объясни плз..... |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
ну рассмотрим простой перебор:
выбираем наугад три дороги, удаляем их, проверяем наличие пути если путь есть, востанавливаем дороги, удаляем другую тройку, опять проверяем... и так, пока не перепробуем все тройки дорог или не найдем нужную а в вышеописанном варианте было предложено оптимизировать этот перебор: использовался следующий факт: если выбрать какой-нибудь путь А-В, то на нем обязательно должна лежать одна из дорог значит, можно перебирать не все дороги, а только те, которые лежат на путях, соединяющих А и В ну и для уменьшения вариантов выбирается кратчайший путь - меньше всего ребер... -------------------- qqq |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
А не связана ли эта задача с поиском остовного дерева?
|
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
maxim1000
АААААа, понял, спасибо! |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: 2 Всего: 32 |
3,14 То что ты описал есть не что иное, как поиск в ширину. Или волновой поиск.
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: нет Всего: 24 |
Кто бы спорил, но как перебор не называй он им и останется -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |