вывод списка смежности из наборов соседей в неориентированном графе - PullRequest
0 голосов
/ 23 сентября 2019

Скажем, у нас есть следующий неориентированный граф:

        0
       /  \
      1    2
            \
             3 
      4

Я пишу функцию, которая принимает в качестве входных данных представление приведенного выше графика, которое выглядит следующим образом:

[{1, 2}, set(), {3}, set()]

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

   0
   0,3
   2 
   -

Это список смежности, где каждый номер строки (не записан) представляет узел, а каждый элемент в строкесоседи узла.Любая вершина без соседа (например, 4) должна иметь '-' на своей линии.

Я изо всех сил пытаюсь написать функцию, которая также записывает родителя узла впереди.Кто-нибудь может придумать питонский способ сделать это?

То, что я имею до сих пор, не выполняет свою работу!n, здесь длина T:

def processT(T,n):
    string = ""
    for i in range(n):
        elem = str(T[i])
        if elem != "set()":
            string += elem.strip("{}").replace(" ","") + "\n"
        else:
            string += "-\n"
    file1 = open("output.txt", "w")
    file1.write(string)
    file1.close()

Любые идеи будут очень полезны.Спасибо!

1 Ответ

1 голос
/ 23 сентября 2019

Как насчет (я просто печатаю вместо записи в файл)

def set_to_str(s):
    if len(s) == 0:
        return "-"
    else:
        return ",".join(map(str, s))

T = [{1, 2}, set(), {3}, set()]
for i, s in zip(range(len(T)), T):
    set_str = set_to_str(s)
    print("{} {}".format(i, set_str))
...