Riconoscimento di Grafi Bipartiti
Certificati di (non) bipartizionabilità
•Il grafo è orientato ma si considera come non orientato
•Per brevità svolgiamo in parallelo due casi:
– Senza archi rossi: il grafo è bipartito
– Con gli archi rossi: il grafo non è bipartito
• Tipologia di esercizio per il caso bipartito
– (1) Fornire un certificato di bipartizionabilità, mostrando l’albero alternante
determinato dalla procedura Bipartito;
• Tipologie di esercizio per il caso non bipartito
– (2) Fornire il certificato di non bipartizionabilità determinato dalla procedura
Bipartito; mostrare l’albero alternante determinato fino al momento in cui la
procedura termina, evidenziando nella figura il certificato trovato;
– (3) Fornire l’insieme di archi da eliminare (per ottenere un grafo bipartito)
determinato dalla procedura Bipartito; mostrare l’albero alternante
determinato.
Attenzione: non è detto che gli archi da eliminare siano quelli rossi!
Specifiche per la procedura Bipartito
• Il nodo scelto come radice è il nodo 1;
• L’insieme di nodi candidati è gestito come fila;
• Per ciascun nodo esaminato, la forward star è esaminata prima
della backward star;
– Gli archi in ciascuna forward star sono esaminati in ordine crescente di
indice del nodo testa;
– Gli archi in ciascuna backward star sono esaminati in ordine crescente
di indice del nodo coda;
– Oppure: l’ordine in cui gli archi in ciascuna backward star sono
esaminati è ininfluente.
Attenzione: il risultato dell’esercizio comprende solo ciò che è esplicitamente
richiesto, non i passaggi intermedi!
1
2
3
1
4
2
5
6
7
8
9
10
11
12
1, 2, 5
Iterazione 1: estrazione ed elaborazione del nodo 1
5
1
2
3
1
4
2
5
6
7
8
9
10
11
12
1, 2, 5, 3, 6
Iterazione 2: estrazione ed elaborazione del nodo 2
3
5
6
1
2
3
1
4
2
5
6
7
8
9
10
11
12
1, 2, 5, 3, 6, 9
Iterazione 3: estrazione ed elaborazione del nodo 5
3
5
6
9
1
2
3
1
4
2
5
5
6
7
8
3
6
9
10
11
12
4
7
1, 2, 5, 3, 6, 9, 4, 7
Iterazione 4: estrazione ed elaborazione del nodo 3
9
1
2
3
1
4
2
5
6
7
8
3
9
10
11
12
4
5
9
6
7
10
1, 2, 5, 3, 6, 9, 4, 7, 10
Iterazione 5: estrazione ed elaborazione del nodo 6
Iterazione 6: il nodo 9 viene estratto senza raggiungere alcun nodo, né modificare l’albero
Tipologia (1) (senza archi rossi):
normale iterazione
1
2
3
1
4
2
5
6
7
8
3
9
10
11
12
4
1, 2, 5, 3, 6, 9, 4, 7, 10, 8
8
Iterazione 7: estrazione ed elaborazione del nodo 4
5
9
6
7
10
1
2
3
1
4
2
5
6
7
8
3
9
10
11
12
4
5
9
6
7
10
1, 2, 5, 3, 6, 9, 4, 7, 10, 8, 11
8
11
Iterazione 8: estrazione ed elaborazione del nodo 7
Iterazione 9: il nodo 10 viene estratto senza raggiungere alcun nodo, né modificare
l’albero
1
2
3
1
4
2
5
6
7
8
3
9
10
11
12
4
5
9
6
7
10
1, 2, 5, 3, 6, 9, 4, 7, 10, 8, 11, 12
8
Iterazione 10: estrazione ed elaborazione del nodo 8
11
12
Iterazioni 11 e 12: i nodi 11 e 12 vengono estratti ed elaborati senza raggiungere alcun
nodo, né modificare l’albero
Risultati per la tipologia 1
•l’albero finale ottenuto
•la partizione dei nodi in due insiemi: {1,3,6,9,8,11} e {2,4,5,7,10,12}
Possibile variante:
•Si richiede solo il certificato, e cioè la partizione, non l’albero
Tipologia (2) (con archi rossi):
si rileva un conflitto,
si determina il certificato
e si termina
1
2
3
1
4
2
5
6
7
8
3
9
10
11
12
4
1, 2, 5, 3, 6, 9, 4, 7, 10, 8
8
Iterazione 7: estrazione ed elaborazione del nodo 4
Si rileva un conflitto con il nodo 10
Si determina il ciclo dispari (2,3,4,10,6,2)
5
9
6
7
10
Risultati per la tipologia 2
•l’ultimo albero determinato, e disegnato su di esso, il ciclo dispari
•è comunque opportuno indicare anche il ciclo, cioè la sequenza nodi
(2,3,4,10,6,2)
Possibile variante:
•Si richiede solo un certificato, e non l’albero: in questo caso basta fornire un
qualunque ciclo di lunghezza dispari, senza preoccuparsi del fatto che possa
essere identificato dalla procedura Bipartito; ad esempio, basterebbe fornire il
ciclo (7,11,12)
Tipologia (3) (con archi rossi):
si rileva un conflitto,
si marca un arco come
“da cancellare”
e si prosegue
1
2
3
1
4
2
5
6
7
8
3
9
10
11
12
4
5
9
6
7
1, 2, 5, 3, 6, 9, 4, 7, 10, 8
8
Iterazione 7: estrazione ed elaborazione del nodo 4
L’arco (4,10) crea un conflitto (ciclo dispari) e deve essere eliminato.
10
1
2
3
1
4
2
5
6
7
8
3
9
10
11
12
4
5
9
6
7
10
1, 2, 5, 3, 6, 9, 4, 7, 10, 8, 12, 11
8
Iterazione 8: estrazione ed elaborazione del nodo 7
11
12
1
2
3
1
4
2
5
6
7
8
3
9
10
11
12
4
5
9
6
7
10
1, 2, 5, 3, 6, 9, 4, 7, 10, 8, 12, 11
8
11
12
Iterazione 9: estrazione ed elaborazione del nodo 10, l’albero non si modifica
Iterazione 10: estrazione ed elaborazione nodo 8, l’arco (8,12) forma un ciclo
dispari e deve essere cancellato.
1
2
3
1
4
2
5
6
7
8
3
9
10
11
12
4
5
9
6
7
10
1, 2, 5, 3, 6, 9, 4, 7, 10, 8, 12, 11
8
11
12
Iterazione 11: estrazione ed elaborazione nodo 12, l’arco (12,11) forma un ciclo
dispari e deve essere cancellato.
L’ultima iterazione (nodo 11) non modifica l’albero.
Risultati per la tipologia 3
•l’albero finale determinato
•l’insieme di archi eliminati: (4,10), (8,12), (11,12)
•è opportuno fornire esplicitamente la bipartizione determinata per il grafo
rimanente, nel nostro caso {1,3,6,8,9,11,12} e {2,4,5, 7,10}
Possibile variante:
•Si richiede solo un insieme di archi da eliminare, e non l’albero: in questo
caso basta fornire
– un qualunque insieme di archi la cui eliminazione rende il grafo bipartito;
– una bipartizione per il grafo rimanente.
Ad esempio, avremmo potuto fornire l’insieme di archi rossi (4,10) e (7,12), e
quindi la stessa bipartizione trovata per la tipologia 1, cioè {1,3,6,9,8,11} e
{2,4,5,7,10,12}
Scarica

ppt