un grafo è una coppia di insiemi:
grafo = (nodi,archi)
dove:
il primo nodi è un qualsiasi insieme di elementi
il secondo archi è un insieme di coppie del primo
definizione di grafo usando solo:
insiemi e tuple
insiemi: {…}
tuple: (…)
da grafo a stringa
simboli: elementi semplici, graffe, parentesi e virgole
trascrizione come stringa
simboli: elementi semplici, graffe, parentesi e virgole
({1,2,3,4}, {(1,2), (1,3), (2,3), (2,4)}}
percorsi non intersecanti:
trovare percorsi da un nodo a a un nodo b
che non si intersecano
quando serve?
flussi continui (di energia, fluidi, beni)
da a a b
problema reale da cui viene:
arco = percorso possibile per un flusso
maximum flow:
trovare percorsi da a a b
con la massima capacità di trasmissione
per ogni arco: intero o reale che indica la capacità
esiste percorso da a a b?
trovare il percorso più breve da a a b
da dove vengono:
arco: tratta di percorso
azione
tratte di lunghezza diversa
azioni di tempi diversi
o costi diversi
stessa memorizzazione:
ogni arco ha un numero associato
nome generico: peso di un arco
nome generico: grafo pesato
ci possono essere due strade diverse fra gli stessi due posti
ci possono essere due condutture con gli stessi punti di partenza e arrivo
vanno bene i grafi normali?
grafo = insieme di nodi e insieme di archi
implicito in "insieme": no ripetizioni
un elemento può essere presente una volta sola al massimo
multiinsieme: un insieme con ripetizioni
esempio: {1,2,4,2,1}
2 e 1 presenti due volte
1 presente una volta sola
grafo = insieme di nodi e insieme di archi
multigrafo = insieme di nodi e multiinsieme di archi
più archi possibili fra gli stessi due nodi
Python: package opzionale
alternativa: usare liste
ignorare l'ordine degli elementi
anche: iperarchi pesati…
come i grafi
ma con gli iperarchi
esempio di ipergrafo?
|
|
grafo non orientato |
|
|
ipergrafo non orientato
|
la destinazione può essere sempre singola
oppure no
cambiano diverse cose
esempio: la definizione di ciclo in un grafo non è più unica