Sono preoccupato che questo potrebbe funzionare su un problema NP-Complete. Spero che qualcuno possa darmi una risposta sul fatto che lo sia o meno. E sto cercando più di una risposta che solo sì o no. Mi piacerebbe sapere perché. Se si può dire: "Questo è fondamentalmente questo problema 'x', che è/non è. (Link wikipedia) NP-completo"Come determinare se due nodi sono connessi?
(No questo non è compito)
Esiste un modo per determinare se due punti sono collegati su un grafo arbitrario non diretto. ad esempio, il seguente
Well
|
|
A
|
+--B--+--C--+--D--+
| | | |
| | | |
E F G H
| | | |
| | | |
+--J--+--K--+--L--+
|
|
M
|
|
House
Punto A se M (senza 'I') sono punti di controllo (come una valvola in un tubo del gas naturale) che possono essere aperti o chiusi. I '+' sono nodi (come i pipe T's), e suppongo che anche Well e the House siano anche nodi.
Mi piacerebbe sapere se cancello un punto di controllo arbitrario (ad es. C) se il pozzo e la casa sono ancora collegati (altri punti di controllo possono anche essere chiusi). Ad esempio, se B, K e D sono chiusi, abbiamo ancora un percorso attraverso A-E-J-F-C-G-L-M, e chiudendo C si disconnetterà il Pozzo e la Casa. Ovviamente; se solo D fosse chiuso, chiudendo solo C non disconnetterebbe la casa.
Un altro modo di mettere questo è C a bridge/cut edge/isthmus?
Potrei trattare ciascun punto di controllo come un peso sul grafico (0 per aperto o 1 per chiuso); e poi trova il percorso più breve tra Well e House (un risultato> = 1 indica che sono stati disconnessi. Ci sono vari modi in cui posso cortocircuitare l'algoritmo per trovare anche il percorso più breve (ad esempio, scartare un percorso una volta che raggiunge 1, stop Cercando una volta che abbiamo QUALSIASI percorso che colleghi il Pozzo e la Casa, ecc.) E naturalmente, posso anche inserire un limite artificiale sul numero di salti da controllare prima di arrendersi
Qualcuno deve aver classificato questo tipo di problema prima, mi manca solo il nome
Sei sicuro di voler cercare il percorso più breve? Sembra che tu voglia solo controllare la connessione. La connessione è più facile del percorso più breve. –
Si prega di trovare un esempio di codice con esempi e spiegazioni [qui] (http://www.geeksforgeeks.org/find-if-there-is-a-path-between-two-vertices-in-a-given-graph) . – evandrix
http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29 –