ПочатиПочніть безкоштовно

Перевірка наявності самопетель у графі

Як пояснював Ерік, NetworkX також допускає ребра, що починаються і закінчуються в одній і тій самій вершині; хоча для графа соціальної мережі це не дуже інтуїтивно, це корисно для моделювання даних на кшталт мереж поїздок, де люди починають у одній локації, а закінчують в іншій.

Перед подальшим аналізом корисно це перевірити, і NetworkX надає для цього метод: nx.number_of_selfloops(G).

У цій вправі та наступних вам стане в пригоді оператор assert. Вираз із assert перевіряє, чи твердження після нього оцінюється як True; інакше буде згенеровано AssertionError.

Спочатку викличте функцію nx.number_of_selfloops(), передавши T, у консолі IPython, щоб отримати кількість ребер, які починаються і закінчуються в одній вершині. Декілька самопетель було синтетично додано до графа. Ваше завдання у цій вправі — написати функцію, яка повертає ці ребра.

Ця вправа є частиною курсу

Вступ до аналізу мереж у Python

Переглянути курс

Інструкції до вправи

  • Визначте функцію find_selfloop_nodes(), яка приймає один аргумент: G.
    • За допомогою циклу for проітерайтеся всіма ребрами в G (без метаданих).
    • Якщо вершина u дорівнює вершині v:
      • Додайте u до списку nodes_in_selfloops.
      • Поверніть список nodes_in_selfloops.
  • Перевірте, що кількість самопетель у графі дорівнює кількості вершин із самопетлями. Це вже зроблено для вас, тож натисніть "Submit Answer", щоб побачити результат!

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# Define find_selfloop_nodes()
def ____:
    """
    Finds all nodes that have self-loops in the graph G.
    """
    nodes_in_selfloops = []

    # Iterate over all the edges of G
    for u, v in ____:

    # Check if node u and node v are the same
        if ____:

            # Append node u to nodes_in_selfloops
            ____

    return nodes_in_selfloops

# Check whether number of self loops equals the number of nodes in self loops
assert nx.number_of_selfloops(T) == len(find_selfloop_nodes(T))
Редагувати та запускати код