ÎncepețiÎncepe gratuit

Cel mai scurt drum II

Acum că ai scris codul pentru a verifica dacă nodul destinație se află printre vecini, următorul pas este să extinzi aceeași funcție cu codul pentru cazul în care nodul destinație nu se află printre vecini.

Tot codul pe care trebuie să îl scrii se află în ramura else; adică, atunci când node2 nu se află în neighbors.

Acest exercițiu face parte din cursul

Introducere în analiza rețelelor în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Folosind metoda .add(), adaugă nodul curent node la mulțimea visited_nodes pentru a ține evidența nodurilor deja vizitate.
  • Adaugă vecinii nodului curent node care nu au fost încă vizitați în queue. Pentru aceasta, va trebui să folosești metoda .extend() a lui queue împreună cu un list comprehension. Metoda .extend() adaugă toate elementele dintr-o listă dată.
    • Atât expresia de ieșire, cât și variabila iterator ale list comprehension-ului sunt n. Iterabilul este iteratorul lui neighbors, iar condiția este dacă n nu se află în nodurile vizitate.

Exercițiu interactiv practic

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

def path_exists(G, node1, node2):
    """
    This function checks whether a path exists between two nodes (node1, node2) in graph G.
    """
    visited_nodes = set()
    queue = [node1]

    for node in queue:
        neighbors = G.neighbors(node)
        if node2 in neighbors:
            print('Path exists between nodes {0} and {1}'.format(node1, node2))
            return True

        else:
            # Add current node to visited nodes
            ____

            # Add neighbors of current node that have not yet been visited
            queue.extend([____ for ____ in ____ if ____ not in ____])
Editează și rulează codul