Lucidi per la discussione della tesi triennale per il corso di laurea triennale in Ingegneria Informatica, Università degli Studi di Trieste (Dipartimento di Ingegneria e Architettura).
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
BisPy: un pacchetto Python per il calcolo della massima bisimulazione di grafi diretti
1. BisPy
un pacchetto Python per il calcolo
della massima bisimulazione di grafi diretti
Francesco Andreuzzi
Università degli Studi di Trieste,
Dipartimento di Ingegneria e Architettura
8 Luglio 2021
Anno accademico 2020-2021 Relatore: Prof. Alberto Casagrande
Francesco Andreuzzi BisPy 8 Luglio 2021 1 / 12
2. Grafi orientati, terminologia
V = {a, b, c, d, e}
E = {ha, bi, hb, ci, ha, di, hc, ei, hd, ei}
a
b
c
d
e
Definizione
Se ha, bi ∈ E =⇒ b è un nodo figlio di a.
Un nodo privo di figli è detto pozzo.
Francesco Andreuzzi BisPy 8 Luglio 2021 2 / 12
3. Bisimulazione
Definizione: Bisimulazione B ⊆ V × V
Se (a, b) ∈ B, allora da a è possibile spostarsi verso un nodo figlio di a che
sia in relazione con un nodo figlio di b, e viceversa.
a
c
b
d e f g
B = {(b, c), (e, g), (d, f )}
Definizione: Nodi bisimili
I nodi a, b sono bisimili se esiste una bisimulazione B tale che (a, b) ∈ B.
Francesco Andreuzzi BisPy 8 Luglio 2021 3 / 12
4. Massima bisimulazione
Definizione
La massima bisimulazione su G = (V , E) è la bisimulazione BM tale che:
R ⊆ BM per ogni bisimulazione R su G.
Si può dimostrare che:
1 La massima bisimulazione è unica;
2 La massima bisimulazione è una relazione di equivalenza
=⇒ induce un partizionamento su V ;
3 BM(a, b) ≡
[
R è una
bisimulazione
R;
4 BM definita come nel punto 3. è una bisimulazione.
Francesco Andreuzzi BisPy 8 Luglio 2021 4 / 12
5. Massima bisimulazione -- Esempio e applicazioni pratiche
a
c
b
d e f g
BM =
(a, a) , (b, c), (c, b) ,
(b, b), (c, c) , (d, d) ,
(e, e), (f , f ), (g, g) ,
(d, e), (e, d), (d, f ) ,
(f , d), (d, g), (g, d) ,
(e, f ), (f , e), (e, g) ,
(g, e), (f , g), (g, f )
A
B
C
Ricerca di nodi equivalenti;
Minimizzazione;
Concurrency theory;
XML indexing.
Francesco Andreuzzi BisPy 8 Luglio 2021 5 / 12
6. Algoritmi per il calcolo della massima bisimulazione
Non incrementali, complessità asintotica |E| log |V |
Algoritmo di Paige-Tarjan;
Algoritmo di Dovier-Piazza-Policriti;
BM(u, v) =⇒ rank(u) = rank(v).
Incrementali
Algoritmo incrementale di Saha.
Francesco Andreuzzi BisPy 8 Luglio 2021 6 / 12
7. BisPy
Python 3;
Open source (https://github.com/fAndreuzzi/BisPy);
Testato su diverse tipologie di grafo, di dimensioni varie.
Example
from bispy import paige_tarjan
# creazione del grafo
graph = networkx.balanced_tree(2,3)
# calcolo della massima bisimulazione
paige_tarjan(graph)
[(7, 8, 9, 10, 11, 12, 13, 14), (3, 4, 5, 6),
(1, 2), (0,)]
Francesco Andreuzzi BisPy 8 Luglio 2021 7 / 12
8. Risultati sperimentali I -- Paige-Tarjan, Dovier-Piazza-Policriti
102 104 106
10−4
100
104
Numero di nodi
Secondi
Alberi bilanciati
PT
DPP
a
c
b
d e f g
Un albero bilanciato.
Francesco Andreuzzi BisPy 8 Luglio 2021 8 / 12
9. Risultati sperimentali II -- Paige-Tarjan, Saha
0 500 1,000 1,500 2,000
10−3
10−2
Numero di nodi
Tempo
medio
(secondi)
Aggiornamento della massima bisimulazione dopo l’aggiunta di un arco
Paige-Tarjan
Saha
0.2
0.4
Secondi
Paige-Tarjan
Saha
Francesco Andreuzzi BisPy 8 Luglio 2021 9 / 12
10. Conclusione
Il software sviluppato consente di osservare e confrontare il
comportamento degli algoritmi su varie tipologie di grafo.
Sviluppi futuri
Pubblicazione di BisPy su JOSS (Journal of Open Source Software);
Ricalcolo incrementale della massima bisimulazione dopo la
rimozione di un arco;
Calcolo della massima bisimulazione con labeled edges;
Integrazione con altre librerie (NetworkX);
Cython per parti critiche del codice.
Francesco Andreuzzi BisPy 8 Luglio 2021 10 / 12