Python - Придумываете «график соединений» из 5 ^ 5? - PullRequest
0 голосов
/ 01 августа 2020

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

graph["me"] = ["alison", "bob", "candy", "duane", "eric"]

Теперь все в этом первый уровень - Элисон, Боб, через eri c - имеет по 5 уникальных друзей каждый (2-й уровень), который изображается как:

graph["alison"] = ["ana", "ann", "ali" "andy", "arda"]
graph["bob"] = ["bill", "bray", "bran", "brad", "bam"]

et c.

теперь каждый из них - ana, ann, bill, bray et c. у каждого есть 5 друзей (3-й уровень) ... до 5-го уникального уровня . Когда мы дойдем до пятого уровня, я буду считать, что друзей больше нет.

На самом деле, я думаю, то, что мне нужно в конце, - это 5 ^ 5 уникальных списков, начинающихся с графика ["xxx"]

На самом деле меня не беспокоит генерация имени - мы можем сделать имена abc1, abc2, et c. Я просто хочу, чтобы он следовал правилам и go 5 x 5 уровней в глубину, следуя приведенному выше шаблону

Есть ли в этом смысл? :) И да, это связано с поиском в ширину. Большое спасибо.

Соответствующая ссылка на github: https://github.com/egonSchiele/grokking_algorithms/blob/master/06_breadth-first_search/python/01_breadth-first_search.py

1 Ответ

0 голосов
/ 01 августа 2020

Попробуйте следующее:

In [8]: me = ["alison", "bob", "candy", "duane", "eric"]

In [9]: graph = {name: [f"{name}_{i}" 
                        for i in range(5)] 
                 for name in me}

In [10]: graph['me'] = me

In [11]: graph
Out[11]: 
{'alison': ['alison_0', 'alison_1', 'alison_2', 'alison_3', 'alison_4'],
 'bob': ['bob_0', 'bob_1', 'bob_2', 'bob_3', 'bob_4'],
 'candy': ['candy_0', 'candy_1', 'candy_2', 'candy_3', 'candy_4'],
 'duane': ['duane_0', 'duane_1', 'duane_2', 'duane_3', 'duane_4'],
 'eric': ['eric_0', 'eric_1', 'eric_2', 'eric_3', 'eric_4'],
 'me': ['alison', 'bob', 'candy', 'duane', 'eric']}

In [12]: 
...