|
4342 / 1474 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
FAQ по графам08.04.2010, 19:30. Показов 113919. Ответов 30
Иногда на форуме появляются просьбы решить задачу на теорию графов. На теории такие задачи решаются не так уж и сложно, ведь сколько существует различных теорем, гипотез и так далее. Но когда дело доходит до программной реализации - возникают трудности. Поскольку теория графов является не только одной из сложных тем в высшей математике, но ещё сложнее реализовать какой-нибудь алгоритм на языке программирования. Также это излюбленная тема в олимпиадном программировании, поэтому данный материал также будет полезен не только для учащихся технических ВУЗов, но и для участников всевозможных олимпиад по информатике (я сам таковым являюсь
). Поэтому я решил создать мини-FAQ по графам, куда буду выкладывть основные алгоритмы и программы в данной теме,а по мере возможности тема будет расширяться новым материалом. Если у вас есть предложения по развитию этого FAQ или у вас есть подходящие материалы, то пишите мне в ЛС. Рассмотрю всё ![]() Итак, начнём. ![]() 1) ПЕРЕД ТЕМ, КАК ЧИТАТЬ ДАЛЬШЕ Для решения задач следует понимать, что представляет из себя граф. http://ru.wikipedia.org/wiki/Граф_(математика) 2) СПОСОБ ХРАНЕНИЯ ГРАФОВ В ПАМЯТИ. Чаще всего используют два способа хранения:
sp[i,1] — от какой вершины отходит ребро i sp[i,2] — к какой вершине приходит ребро i; Отдельно можно завести массив P(M), где P[i] будет хранить вес ребра i;
3)ВВОД И ВЫВОД По умолчанию в программах будет рассматриваться ввод с клавиатуры. Я не стану пока описывать процедуры чтения из файла, так как в разных задачах структура файла бывает разной. Но стоит лишь немного изменить нижеприложенные процедуры, как будет получена возможность чтения из файла.
4) ОСНОВНЫЕ АЛГОРИТМЫ
5) ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ НА ГРАФЫ 1) Дано N городов, некоторые из них соединены двусторонними дорогами. Проезда по каждой дороге имеет свою стоимость. Необходимо составить программу, которая по заданной таблице истинности находит путь от города S1 до города S2, суммарная стоимость которая будет минимальна. Формат входных данных: на вход подаётся файл, содержащий в первой строке N. S1 и S2. (1<=N<=50, 1<=S1<=N, 1<=S2<=N). Затем в следующих N строках идут числа, описывающие очередную строку матрицы смежности. Формат выходных данных: на экран вывести города, которые следуют в искомом пути. Пример:
Решение: наиболее удачным и быстродейственным способом нахождения пути от одного пункта к другому является метод Дейкстры, которая ищет минимальные расстояния от какой-то заданной точки до всех остальных. В алгоритме заведём массив предков P(N), который будет содержать минимальный путь, где P[I] - точка, от которой пришли в I по найденному минимальному пути. P[S] будет равно нулю, если S - корневая вершина (от которой и ищем пути). Код программы:
49
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
| 08.04.2010, 19:30 | |
|
Ответы с готовыми решениями:
30
Чем определяется одинаковость урлов /page?FAQ и /page.php?FAQ Книги по графам книги по графам |
|
13 / 5 / 0
Регистрация: 15.11.2015
Сообщений: 57
|
|
| 20.11.2015, 09:08 | |
|
Уважаемый Ромаха, спасибо, что откликнулись!
Головоломка "игра в восемь" на поле 3x3 - одна из первых задач эвристического поиска и допускает решение поиском в глубину (DFS = Depth-first search) с использованием "тупого рекурсивного перебора". Но, признаюсь, работать с графами никогда не доводилось, а тут прочитал в книжке: Кормен Т.Х., Лейзерсон Ч.И., Ривест Р.Л., Штайн К. Алгоритмы: Построение и анализ. Часть VI. Алгоритмы для работы с графами. 22.3. Поиск в глубину (DFS). ...В отличие от поиска в ширину, где подграф предшествования образует дерево, при поиске в глубину подграф предшествования может состоять из нескольких деревьев, так как поиск может выполняться из нескольких исходных вершин... На рис. 22.4 проиллюстрировано выполнение процедуры DFS над графом, приведенном на рис. 22.2... Согласитесь – заманчивые слова :-) Но не смог даже сделать первый шаг – нарисовать граф :-( Вот и стало интересно – насколько наглядное изображение задачи в виде графа приближает к решению задачи, ведь появляется проблема представления графа в программе для исполнения на компьютере...
0
|
|
|
13 / 5 / 0
Регистрация: 15.11.2015
Сообщений: 57
|
|
| 20.11.2015, 15:48 | |
|
Простите, а чем плоха эта игра в качестве незатейливого и доступного для понимания примера? Здесь легко формулируется исходное и конечное состояния, понятны команды управления фишками... Конечно, не стану противиться использованию предложенного Вами примера и буду благодарен за комментарии :-)
Уже признался – в этой теме я полный профан... Добавлено через 29 минут Дополнение: "игра в восемь" мне показалась более интеллектуальной в сравнении, например, с задачкой жадного коммивояжера, мечущегося по городам! Есть различные варианты исходного состояния (пустой квадрат в середине, в углу, в средине стороны) – есть, что пообсуждать вплоть до существования решения.... Думаю, это интересно школьникам...
0
|
|
| 20.11.2015, 18:59 | ||
|
Хотите понять принцип? Открой сайт ACMP точка RU. Найдите задачку "Скачки". Сможете придумать решение без гугла, чтения обсуждений и прочего - поздравляю. Вы придумали dfs. (ну или научились его применять). Вы выбираете слишком сложную задачу, а в результате нет никакого весомого профита..
0
|
||
|
13 / 5 / 0
Регистрация: 15.11.2015
Сообщений: 57
|
|
| 20.11.2015, 19:57 | |
|
Спасибо, сайт открою!
Была догадка, что в большинстве случаев "теория графов" притягивается к решению реальных задач без достаточного основания. Ничего плохого не могу сказать про "теорию игр", хотя не очень понимаю, какие ее основополагающие принципы нужны для реализации поиска в глубину. Если не брать в ум построения графа, то все-равно "игра в восемь" будет считаться сложной? Какую задачку для детишек советуете?
0
|
|
| 21.11.2015, 00:43 | |||
Для тупого перебора - нет Вечерком.. Если не забуду(или не засну на клавиатуре) - отпишусь про игру. Добавлено через 4 часа 36 минут Прекрасная задача : тык Про 8: Ничего кроме перебора в голову не идёт. А в переборе будут циклы. А с ним разбираться совсем не хочется. Короче говоря запускать dfs от каждой занятой ячейки. Причём запускать на определенную длину. А там просто делать все возможные ходы (не больше четырёх вариантов на каждой глубине). Тольконудно будет здраво оценивать ценность каждого хода. А это проблематично. Можно конечно просто ждать пока не поставим ячейку в нужную позицию - но это долго и не всегда оптимально. Задачу Вы выбрали очень даже не простую. Посмотрите мою. Если Ваши школьники справятся - то есть огромный потенциал. Хотя по сути в задаче нет ничего сложного..
0
|
|||
| 21.11.2015, 09:23 | |||||||
0
|
|||||||
|
13 / 5 / 0
Регистрация: 15.11.2015
Сообщений: 57
|
|
| 21.11.2015, 10:55 | |
|
Уважаемый Ромаха,
очень прошу Вас, как более опытного участника форума, выполнить просьбу уважаемого супер-модератора и создать тему со ссылкой на эту интереснейшую тему! Заранее благодарю, Евгений. Добавлено через 51 минуту ...а потом подумал - Вы ведь ждете моего ответа!? Создал новую тему: FAQ Прикладное FAQ Прикладное там и мой ответ! Уважаемый модератор - мы стараемся... будьте снисходительны к несчастным...
0
|
|
|
0 / 0 / 0
Регистрация: 10.04.2020
Сообщений: 7
|
|
| 26.05.2020, 18:32 | |
|
Скажите пожалуйста, а как решаются задачи на размещение объектов? Например, надо разместить пожарную часть только в городе
0
|
|
|
7 / 7 / 2
Регистрация: 30.04.2012
Сообщений: 188
|
|
| 26.08.2022, 07:40 | |
|
Всем доброго здоровья и творческих успехов! Кто знает алгоритмы поиска независимого множества на произвольном графе? Граф - неориентированный и рёбра весов не имеют. Интересно узнать про алгоритмы разные, в том числе и на основе систем искусственного интеллекта.
0
|
|
|
1 / 0 / 1
Регистрация: 05.09.2018
Сообщений: 4
|
|
| 17.03.2023, 17:12 | |
|
Книга "Графомания"
Алгоритмы на произвольных графах реализованы на языке Delphi (Object Pascal). Все исходники в наличии. Скачивается бесплатно. Содержание: Знакомство с объектами, отношениями и множествами Представление объектов в языке Delphi Представление множеств, операции с множествами Понятие о сложности (трудоёмкости) алгоритмов Задачи на множествах: • разбиение множества на подмножества; • задача о наименьшем разбиении (ЗНР); • задача о наименьшем покрытии (ЗНП). Представление отношений графами Программная реализация графов, ввод и вывод графов Группа задач на достижимость: • взаимная достижимость вершин; • кратчайшие пути между вершинами; • выделение сильно связанных компонент. Группа задач на размещение: • независимые вершины и клики; • доминирующие множества; • раскраски; • центры; • p-центры; • p-медианы. Остовные деревья Группа задач о потоках: • максимальный поток в сети; • поток, ограниченный сверху и снизу; • минимальная стоимость потока. Паросочетания: • паросочетание в двудольном графе; • паросочетание в произвольном графе. Цикл Эйлера и задача почтальона: • на неориентированном графе; • на орграфе. Задачи Гамильтона и коммивояжёра: • разомкнутая задача Гамильтона; • замкнутая задача Гамильтона (контур); • комбинирование методов для задач Гамильтона; • замкнутая и разомкнутая задачи коммивояжёра.
0
|
|
| 17.03.2023, 17:12 | |
|
Задание по графам алгоритм по графам Задачка по графам задача по графам Задача по Графам Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|