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

Обход в ширину (графы)

01.06.2019, 00:40. Показов 5415. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно решить следующую задачу на Python:
В неориентированном графе требуется найти длину кратчайшего пути между двумя вершинами.

Входные данные
Во входном файле INPUT.TXT записано сначала число N - количество вершин в графе (1 ≤ N ≤ 100). Затем записана матрица смежности (0 обозначает отсутствие ребра, 1 - наличие ребра). Затем записаны номера двух вершин - начальной и конечной.

Выходные данные
В выходной файл OUTPUT.TXT выведите длину кратчайшего пути. Если пути не существует, выведите одно число -1.
Есть код на С++:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
#include<queue>
using namespace std;
int main() {
int n,i,j,k,f,s;queue<int> q;
cin>>n;int a[n][n],d[n];
for(i=0;i<n;++i)
{
d[i]=1000000000;
for(j=0;j<n;++j)cin>>a[i][j];}
cin>>s>>f;s--;f--;
d[s]=0; q.push(s);
while(!q.empty()){i=q.front();q.pop();
for(j=0;j<n;++j)
if(a[i][j]&&d[j]>d[i]+1){
d[j]=d[i]+1;q.push(j);}}
if(d[f]<1000000000)cout<<d[f];
else cout<<-1;
return 0;}
Пытаюсь его перевести:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
n=int(input())
for i in range(n):
    W = [[int(j) for j in input().split()] for i in range(m)]
s,f = map(int, input().split())
q = []
INF = 10000
d = [INF] * n
for i in range(n):
    d[i]=10000
    d[s]=0
    q.append(s);
    while len(q)!=0:
        i=q[0]
        q.pop()
    for j in range(n):
       if(W[i][j] and d[j]>d[i]+1):
           d[j]=d[i]+1
           q.append(j)
if(d[f]<1000000000):
    print([f])
else:
    print(-1)
Не работает
Подскажите где ошибка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2019, 00:40
Ответы с готовыми решениями:

Печать на консоль бинарного дерева, обход в ширину
Добрый вечер! Сразу скажу, топик не для слабонерных. Выручайте уважаемые программисты. Встала...

Графы, обход вершин в ширину и глубину
Граф задан матрицей смежности. Изобразить граф и два его подграфа, получаемые обходом его вершин...

Обход в ширину обход в глубину
помогите написать комментарии к коду def bfs_path(graph, start, end): visited = set() ...

кто поможет переделать 5 процедуру обход графа в глубину на обход графа в ширину
program kurs_work; uses crt,GraphABC; const n = 6; max = 1000; max_n = 36; var i,...

Поиск в ширину (Обход в ширину)
Напишите, пожалуйста, реализацию bfs в с++ и объясните что к чему

2
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
4190 / 1291 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
01.06.2019, 11:11 2
Вы же, помнится, с графами работали с помощью библиотеки NetworkX? Что случилось, что решили переписывать примеры с С++ на Python? )))
По поводу кода как-то странно. Попробуйте просто перепечатать с одного языка на другой. С сохранением последовательности команд. А то исполнение на python в вашем варианте как-то совсем не похоже на вариант С++.
0
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 92
01.06.2019, 15:57  [ТС] 3
Работала. А сейчас нужно без библиотеки поработать, в общем виде применяя алгоритмы...
Насчет перепечатать, я не знаю языка С++, поэтому и попросила помощи, как смогла, так и перевела)
0
01.06.2019, 15:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2019, 15:57
Помогаю со студенческими работами здесь

Графы, обход графа
Подправить 3,5 и 5 строки , неправильно написано, если есть ошибки то подправьте пожалуйста...

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

Графы-Поиск в ширину
В неориентированном графе требуется найти минимальный путь между двумя вершинами. Формат входных...

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

Графы. Поиск в ширину.
вот поиск в ширину (выводит кратчайший путь из вершины first в вершину last) : #include...

Обход в ширину
Допустил ли я здесь ошибки? 1. помечаем 6 как посещённое и добавляем ее соседние вершины в...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru