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

Пошук відкритих трикутників

Переходьте до пошуку відкритих трикутників! Нагадаємо, що вони лежать в основі систем рекомендацій друзів: якщо «A» знає «B» і «A» знає «C», то ймовірно, що «B» також знає «C».

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

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

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

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

  • Напишіть функцію node_in_open_triangle(), яка має два параметри — G і n — і визначає, чи перебуває вузол у відкритому трикутнику зі своїми сусідами.
    • У for-циклі пройдіть усі можливі комбінації зв'язків для трикутника.
    • Якщо вузли n1 і n2 не мають між собою ребра, встановіть in_open_triangle у True, вийдіть з if і поверніть in_open_triangle.
  • Використайте цю функцію, щоб порахувати кількість відкритих трикутників у T.
    • У for-циклі пройдіть усі вузли в T.
    • Якщо поточний вузол n входить до відкритого трикутника, збільшіть num_open_triangles.

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

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

from itertools import combinations

# Define node_in_open_triangle()
def node_in_open_triangle(G, n):
    """
    Checks whether pairs of neighbors of node `n` in graph `G` are in an 'open triangle' relationship with node `n`.
    """
    in_open_triangle = False

    # Iterate over all possible triangle relationship combinations
    for n1, n2 in ____:

        # Check if n1 and n2 do NOT have an edge between them
        if not ____:

            in_open_triangle = ____

            break

    return ____

# Compute the number of open triangles in T
num_open_triangles = 0

# Iterate over all the nodes in T
for n in ____:

    # Check if the current node is in an open triangle
    if ____:

        # Increment num_open_triangles
        ____ += 1

print(num_open_triangles)
Редагувати та запускати код