Algoritmo nel grafo BFS non orientato

3

Sto provando a mettere insieme un algoritmo che visualizzerà il grado di nodo per ogni nodo in un ampio albero grafico (supponiamo che sia stato chiamato BFS). Supponiamo che sia un grafo non orientato. Non sono sicuro di come ottenere il grado di nodo di un nodo quando si passa attraverso il grafico. Stavo pensando di sommare ogni occorrenza del nodo in ogni elenco, quindi sommando tutte le occorrenze all'interno dell'elenco di quel nodo (tutte da quando è non orientato), ma non sono sicuro di come implementarlo. Rispondi solo con uno pseudocodice. Ho solo bisogno dell'algoritmo, quindi implementerò più tardi in una lingua.

BFS-get-all-degrees
    occurr[v] = 0
    for each v in G.v
        for each u in adj[v] //loop through each adjacency list
            if v==u
                occurr[v]++
        print occurr[v]++

Penso che sia sulla strada giusta. Non è assolutamente giusto, ma non sono sicuro di dove andare da lì.

EDIT:

Ho trovato un codice migliore. Penso che funzioni in O (V + E) ma non sono sicuro.

BFS_Node_Degree
    for each vertex v in V
        count = 0
        for each vertex u in adj[v]
            count++
        print "the node ",v," has degree ", count
    
posta stackuser 17.06.2013 - 03:02
fonte

1 risposta

2

Bene, basta richiamare la definizione di grado nei grafici non orientati:

Il grado di un nodo in un grafo non orientato senza spigoli multipli è uguale al conteggio dei suoi nodi vicini (= i suoi nodi adiacenti).

Dato che il conteggio dell'elenco di adiacenza di ciascun nodo è uguale al suo conteggio del nodo neigbor, l'algoritmo assomiglia a questo:

BFS-get-all-degrees
occurr[v] = 0
for each v in G.v
    occurr[v] = adj[v].Count
    print occurr[v]
    
risposta data 18.06.2013 - 00:44
fonte

Leggi altre domande sui tag