Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 05.04.2020
Сообщений: 1

Найти кратчайший путь в ориентированном графе с вершинами и дугами разных цветов

05.04.2020, 15:41. Показов 5987. Ответов 3

Студворк — интернет-сервис помощи студентам
Не могу решить задачу, уже не знаю сколько времени долблюсь лбом об стену, ничего не выходит.
Задание следующее:

Дан ориентированный граф с N вершинами (N < 50). Вершины и дуги окрашены в цвета с номерами от 1 до М (М < 6).
Указаны две вершины, в которых находятся фишки игрока, и конечная вершина.
Правила перемещения фишек: игрок может передвигать фишку по дуге, если ее цвет совпадает с цветом вершины,
в которой находится другая фишка; ходы можно делать только в направлении дуг графа; поочередность ходов необязательна. Игра заканчивается, если одна из фишек достигает конечной вершины.
Написать программу поиска кратчайшего пути до конечной вершины, если он существует.

Сделал граф через матрицу смежности, где смежные вершины с разными цветами помечены разными цифрами. Вот рандомный генератор, на всякий случай, где n - кол-во вершин, а m - кол-во цветов:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def Graph(n, m):
    g = []
    mx = 4
    q = 0
    for i in range(n):
        g.append([])
        for j in range(n):
            if j == i:
                g[i].append(random.randint(1, m))
            else:
                g[i].append(0)
    for i in range(n):
        for j in range(n):
            if j != i:
                if random.choice([0, 1]) == 1 and q < mx:
                    g[i][j] = g[i][i]
                    q += 1
                else:
                    g[i][j] = 0
        q = 0
    return g
Ну а сам алгоритм сделать вообще никак не могу, просто жесть какая-то.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2020, 15:41
Ответы с готовыми решениями:

Найти кратчайший путь в ориентированном графе
Нужно найти кратчайший путь в ориентированном графе, программу написать на Delphi. 2 дня рыл форумы, прочитал кучу алгоритмов, неполучается...

Найти кратчайший путь в ориентированном графе используя множества
Ориентированный граф задано массивом, индексами которого являются имена вершин, а элементами - множества вершин, в которые можно попасть с...

Найти кратчайший путь между вершинами b и e в неориентированном взвешенном графе
Найти кратчайший путь между вершинами b и e в неориентированном взвешенном графе. Форма ввода: В первой строке вводится четыре целых...

3
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
05.04.2020, 15:55
Советую ознакомиться с курсом "Алгоритмы и структуры данных на Python3". А именно посмотреть 23 и 24 лекции.
1
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
06.04.2020, 02:23
cleerax, с алгоритмом-то как раз проблем никаких нет. Если нужен кратчайший путь - алгоритм Дейкстры вполне подойдет. Проблема здесь - понять, какой граф им обходить. А что, если вершинами нового графа будут пары вершин исходного, в которых расположены фишки?
1
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
06.04.2020, 05:21
Думаю, что для начала следует найти все возможные пути в орграфе из исходных точек в конечную без учета цветности вершин и ребер. Далее перебирать цепи по цветам (вершины) для первой точки и искать такие, чтобы к ней существовала дуальная цепь (по ребрам) такого же цвета для второй точки.
М.б. имеет смысл заменить цветные ребра - вершинами, тогда получим орграф только с цветными вершинами, без цветных ребер.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.04.2020, 05:21
Помогаю со студенческими работами здесь

Используя метод поиска в ширину, найти и вывести путь в ориентированном графе между двумя вершинами
Ребята день добрый. Задание у меня вот такое: Используя метод поиска в ширину, найти и вывести путь в ориентированном графе между...

Максимальный путь между заданными вершинами в ориентированном графе
Найти максимальный путь между заданными вершинами в ориентированном графе. Граф должен быть представлен в виде списка смежности.

Найти путь в ориентированном графе
Здравствуйте, помогите, пожалуйста, решить задачу: Дан список взвешенных дуг ориентированного графа. Найти путь с заданным весом,...

Найти кратчайший путь в графе
Здравствуйте. Мне необходима помощь в решении курсовой. Необходимо найти кратчайший путь в направленном графе. Вот код моей...

Найти кратчайший путь в графе
Здравствуйте. У меня есть массив вида: a1 b1 v1 a2 b2 v2 ... an bn vn ,где a1-an - первая вершина графа,b1-bn - вторая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru