ÎncepețiÎncepe gratuit

Găsirea triunghiurilor deschise

Să trecem acum la găsirea triunghiurilor deschise! Reamintește-ți că acestea stau la baza sistemelor de recomandare a prietenilor: dacă „A" îl cunoaște pe „B" și „A" îl cunoaște pe „C", atunci există probabilitatea ca „B" să îl cunoască și pe „C".

Acest exercițiu face parte din cursul

Introducere în analiza rețelelor în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Scrie o funcție node_in_open_triangle() cu doi parametri – G și n – care identifică dacă un nod se află într-un triunghi deschis împreună cu vecinii săi.
    • În bucla for, iterează peste toate combinațiile posibile de relații triunghiulare.
    • Dacă nodurile n1 și n2 nu au o muchie între ele, setează in_open_triangle la True, ieși din instrucțiunea if și returnează in_open_triangle.
  • Folosește această funcție pentru a număra triunghiurile deschise existente în T.
    • În bucla for, iterează peste toate nodurile din T.
    • Dacă nodul curent n se află într-un triunghi deschis, incrementează num_open_triangles.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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)
Editează și rulează codul