Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2013, 07:17   #11
Uefa
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 59
По умолчанию

Цитата:
Сообщение от SaLoKiN Посмотреть сообщение
а разве для такой картинки матрица смежности будет такой?
0, 1, 1, 0,
0, 0, 1, 0,
1, 0, 0, 1,
0, 1, 0, 0,
и вроде для нахождения кратчайшего пути граф должен быть взвешенный...или нужно найти путь по минимальному количеству пройденных вершин от start to end?
На картинке я привел простейший пример, для понимания того, что у меня не получается. Граф в программе будет вводится с клавиатуры через матрицу смежности (либо браться из текстового файла). Кратчайший путь находим по минимальному количеству пройденных ребер.
Uefa вне форума Ответить с цитированием
Старый 04.12.2013, 07:21   #12
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
и вроде для нахождения кратчайшего пути граф должен быть взвешенный...или нужно найти путь по минимальному количеству пройденных вершин от start to end?
О Боги!
Граф может быть каким угодно..
Да! Именно так!

BFS будет такой
Код:
while (!empty(q))
{
     v = pop(q);
     for (i = 1; i <= n; i++)
         if (adj[v][i] == 1 && p[i] == INF) 
         {
              push(q, i);
              p[i] = p[v]+1;
         }
}
Poma][a вне форума Ответить с цитированием
Старый 04.12.2013, 07:37   #13
Uefa
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
О Боги!
Граф может быть каким угодно..
Да! Именно так!

BFS будет такой
Код:
while (!empty(q))
{
     v = pop(q);
     for (i = 1; i <= n; i++)
         if (adj[v][i] == 1 && p[i] == INF) 
         {
              push(q, i);
              p[i] = p[v]+1;
         }
}
А можно еще расшифровать? Т. е. q это очередь? Пока очередь не пустая, присваиваем текущей вершине pop(q)... это как? pop() как я знаю это удалить элемент из очереди, void функция, как мы можем ее присвоить? И что такое INF?

p.s. видимо v = pop(q) означает, что берем первый элемент из очереди, с помощью цикла for перебираем все вершины графа и если находим ребро и ... что все-таки такое INF? Потом кладем в очередь смежную вершину и какие-то махинации с массивом p, объясните пожалуйста подробнее.

Последний раз редактировалось Uefa; 04.12.2013 в 07:43.
Uefa вне форума Ответить с цитированием
Старый 04.12.2013, 07:44   #14
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Т. е. q это очередь?
да
Цитата:
pop() как я знаю это удалить элемент из очереди
Вполне может быть.
Всё зависит от реализации очереди..
Есть top - берет элемент, не удаляя
А есть pop - удаляет элемент
В моей реализации я забабахал и top и pop в одну функ
Цитата:
И что такое INF?
Плюс бесконечность
Poma][a вне форума Ответить с цитированием
Старый 04.12.2013, 08:06   #15
Uefa
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
да

Вполне может быть.
Всё зависит от реализации очереди..
Есть top - берет элемент, не удаляя
А есть pop - удаляет элемент
В моей реализации я забабахал и top и pop в одну функ

Плюс бесконечность
Берем первую вершину из очереди, удаляем ее из очереди, с помощью цикла for ищем смежные вершины, если находим добавляем в очередь... а что за массив p и для чего мы сравниваем его с бесконечностью?
Uefa вне форума Ответить с цитированием
Старый 04.12.2013, 15:50   #16
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

В P хранится путь..
Цитата:
и для чего мы сравниваем его с бесконечностью?
Потому что, если для этой вершины найден, нечего нам его снова искать.. (войдем в бесконечный цикл)..
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кратчайший путь Delphi zzzzz Помощь студентам 1 27.06.2012 07:39
Кратчайший путь от одной точки до другой. firephenix Помощь студентам 3 05.06.2011 00:30
Кратчайший путь к точке W0LF Общие вопросы Delphi 3 17.05.2011 15:40
Кратчайший путь между двум вершинами Gapro Общие вопросы C/C++ 4 04.11.2010 20:24
Найти кратчайший путь между точками lucky Общие вопросы Delphi 0 27.05.2009 07:26