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

Алгоритм поиска кратчайшего пути от одного пользователя к другому BFS

08.10.2023, 06:24. Показов 1192. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день

Помогите реализовать алгоритм поиска кратчайшего пути через спарк:

Задача.
Есть датасет twitter
Начало кода по подключению такое:
Python
1
2
3
4
5
6
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
spark = SparkSession.builder.appName("TwitterShortestPath").getOrCreate()
 
df = spark.read.format("text").options(header=True, inferSchema=True).load("/data/twitter/twitter_sample_small.txt")
df = df.selectExpr("split(value, '\t')[0] as user_id", "split(value, '\t')[1] as follower_id")
В каждой строке находятся следующие поля, разделенные знаком табуляции:
○ INT - ID пользователя
○ INT - ID follower’а

Необходимо найти длину кратчайшего пути от follower’а 12 к пользователю 34.
Каждый follower в свою очередь может выступать в роли пользователя. Граф считаем направленным: user ← follower.

В ходе реализации запрещается использовать collect более 1-го раза (можно
для получения финального результата - длина пути). Запрещено использовать
collect в циклах и рекурсиях.

Предлагают создать таблицу, которая хранит список user_id, которые были на предыдущем шаге.
и таблицу всех user_id, на которых подписаны юзеры, которые раньше были фаловерами
Сделать два джойна - один, чтобы получить список юзеров, на которые подписаны фаловеры на предыдущем шаге, а вторым джойном удалять юзеров, которые уже встречались и записаны. +Подключить счетчик.

Вроде крутится в голове но никак не могу на "бумагу перенести".

Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.10.2023, 06:24
Ответы с готовыми решениями:

Алгоритм поиска кратчайшего пути
Написать программу, которая реализует алгоритм поиска кратчайшего пути. Граф

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

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

4
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
08.10.2023, 07:01
meet in the middle
0
0 / 0 / 0
Регистрация: 02.06.2023
Сообщений: 5
08.10.2023, 07:36  [ТС]
Попытка такая:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from pyspark.sql import SparkSession
from pyspark.sql.functions import col
 
spark = SparkSession.builder.appName("TwitterBFS").getOrCreate()
 
df = spark.read.format("text").options(header=False, inferSchema=True).load("/data/twitter/twitter_sample_small.txt")
df = df.selectExpr("split(value, '\t')[0] as user_id", "split(value, '\t')[1] as follower_id")
 
start_user_id = 12
end_user_id = 34
 
previous_users_table = spark.createDataFrame([(start_user_id,)], ["user_id"])
 
previous_users_table.show(10, False)
 
path_length = 0
 
while previous_users_table.filter(col("user_id") == end_user_id).count() == 0 and previous_users_table.count() > 0:
    path_length += 1
    next_level_users = df.join(previous_users_table, df.follower_id == previous_users_table.user_id, "inner").select(df.user_id.alias("user_id"))
 
    next_level_users.createOrReplaceTempView("next_level_users")
 
    previous_users_table = next_level_users
    
print(path_length)
Прошу очень проверить экспертам...

Добавлено через 15 минут
неправильно опсчитал
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
08.10.2023, 12:08
Zhaina_, а где тут BFS ?

Добавлено через 1 минуту
и что тут под BFS подразумевается?
0
0 / 0 / 0
Регистрация: 02.06.2023
Сообщений: 5
09.10.2023, 06:29  [ТС]
Выше оказалось правильное решение. Сомневалась т к ответ удивил немного.

Добавлено через 3 минуты
https://youtu.be/k9cNb5ePN_Y?si=-QB5ePKPZsLthXNE

Здесь отлично объясняют о самом алгоритме BFS.

https://ru.wikipedia.org/wiki/... 0%BD%D1%83

а это вики

Всем удачи)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.10.2023, 06:29
Помогаю со студенческими работами здесь

Алгоритм Дейкстры поиска кратчайшего пути
Помогите решить задачу. У меня с графами проблемы Разработать и реализовать в виде программы алгоритм Дейкстры для заданного графа с...

Реализовать алгоритм поиска кратчайшего пути A*
Реализовать алгоритм поиска кратчайшего пути A* На выходе - новая программа, способная отвечать на запросы и возвращать кратчайший...

Алгоритм поиска кратчайшего пути из точки А в точку Б на C++
Я хотел создать стратегию на C++ но не смог реализовать движение юнитов в ней. Я прочитал много статей по поводу нахождения пути А* и...

Генетический алгоритм поиска кратчайшего пути в графе
Преподаватель дал вот такое задание : "Распараллелить генетический алгоритм на куда, а алгоритм будет искать кратчайший путь в графе. Ну...

Алгоритм поиска кратчайшего пути из точки А в точку Б на C++
Я хочу написать игру чисто для себя но не знаю как реализовать движение юнитов в моей игре. Я читал про алгоритм А* и какие то похожие но...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru