![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 09.07.2009
Сообщений: 42
|
![]()
В общем преподаватель подкинул задачку, я уже 3-ий день к ней никак подобраться не могу. Код ни в коем случае не нужен. Нужны ссылки / советы.
Он сказал что это по теме "Структурный анализ ориентированных графов". Яндекс таких слов не знает. Дан ориентированный граф. 5 точек соединённых произвольно. Точки пронумерованы. Пример: ![]() Задаются начальное и конечное значение. По которым программа должна вывести все пути, по которым можно проследовать от начальной точки до конечной. К примеру: Входное значение - 1 Выходное - 5 Должно вывести: 1-2-5 1-2-3-5 1-4-5 1-2-4-5 Граф задаётся массивом вида: ![]() 1-есть связь 0(пусто)- нет связи Мне в голову всё лезут бинарные деревья, но как прикрутить их сюда - ума не приложу. Если нет вариантов - Скиньте задачки с решениями на графы. Поиск таковых для Паскаля успехом не увенчался. ---Добавлено------- По одному пути можно проходить лишь один раз. В пути можно использовать каждую вершину только один раз. Последний раз редактировалось Zo0M; 03.11.2009 в 13:06. |
![]() |
![]() |
![]() |
#2 |
Proger Man
Форумчанин
Регистрация: 07.03.2009
Сообщений: 584
|
![]()
ShowMessage('Добро пожаловать!');
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 07.03.2009
Сообщений: 123
|
![]()
А Google знает? Смотри в Wiki по графам, там всё есть
Не говорите что мне делать, и я не скажу куда Вам идти.
Пишу программы на заказ на Delphi и Pascal Форум разработчиков Pascal и Delphi |
![]() |
![]() |
![]() |
#4 | |
Пользователь
Регистрация: 09.07.2009
Сообщений: 42
|
![]() Цитата:
Вика ничего толкового не сказала. Просто сказала, какие графы есть, чем они отличаются и всё. Интересуют именно алгоритмы работы с ними. |
|
![]() |
![]() |
![]() |
#5 |
Я есть!
Форумчанин
Регистрация: 17.02.2008
Сообщений: 318
|
![]()
Дискретная математика вам в помощь
![]()
©Учиться, учиться и еще раз учиться!
|
![]() |
![]() |
![]() |
#6 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
![]()
Начните с алгоритма Дейкстры, а дальше уже раскручивайте сами.
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
![]()
Дейкстры? Это уже дело вкуса, можно и Дейкстрой. Я бы делал обходом в ширину (проще всего для каждого елемента очереди организировать свой массив путевых указателей, можно сделать через общий список указателей). Делаем полный обход и для каждого попадания в конечную точку выводим путь.
|
![]() |
![]() |
![]() |
#8 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
![]()
А вообще ответов безчисленное множество, ибо можно некоторый участок пути проходить произвольное количество раз.
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
![]()
Ну тогда сначала проверка на цикличность, если ацикличен - решать, иначе - не решать и выводить сообщение. Хотя циклы могут быть и вне допустимого пути,но это уже такое. Хотя и влияние циклов можно проверить - тем же БФС. А еще, как вариант, можно проверять на цикличность в процесе БФС. Если граф ациклический, то мы никогда не попадем в вершину, в которой уже были.
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 09.07.2009
Сообщений: 42
|
![]()
Кажется нашёл достаточно нубское решение. Но преподаватель сказал:
хоть как-нибудь, так что попробую реализовать. Идея: Максимальное количество путей содержит граф вида: ![]() т.к у него соединены все вершины во всех направлениях. Для него максимальное число путей из одной точки в другую - 16 1-2-3-4-5 1-2-4-3-5 1-3-2-4-5 1-3-4-2-5 1-4-2-3-5 1-4-3-2-5 1-2-3-5 1-2-4-5 1-3-2-5 1-3-4-5 1-4-2-5 1-4-3-5 1-2-5 1-3-5 1-4-5 1-5 То есть в задаче максимальное число путей - 16 Я хочу построить массив из 16 строк[5] и потом уже обрабатывать их на предмет есть ли связь, удаляя ненужные строки. Обрабатывать на основе исходной матрицы, думаю будет не сложно, сейчас приступлю. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Генератор графов | bondik | Общие вопросы C/C++ | 6 | 18.02.2011 17:52 |
СТРУКТУРНЫЙ ТИП ДАННЫХ "МАССИВ" | Urz-3 | Помощь студентам | 11 | 07.06.2009 14:40 |
С++. Теория графов | curly182 | Общие вопросы C/C++ | 3 | 28.05.2009 23:14 |
рисование графов | Pitbull | Общие вопросы Delphi | 0 | 13.12.2008 19:26 |