• Non ci sono risultati.

Fondamenti Logici dell’Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti Logici dell’Informatica"

Copied!
72
0
0

Testo completo

(1)

Fondamenti Logici dell’Informatica

Corso di Laurea Magistrale in Informatica Logica e Complessità

Ugo Dal Lago

Anno Accademico 2018-2019

(2)

La Complessità Computazionale

I Uno degli scopi più importanti che l’informatica teorica is prefigge è la classificazione dei problemi computazionali rispetto alla quantità di risorse che la loro risoluzione richiede.

I In questo modo, è possibile comprendere l’intrinseca difficoltà dei problemi computazionali che ci troviamo a risolvere.

I Parimenti, si può in questo modo studiare quali siano i limiti del calcolo con risorse limitate.

I Per fare tutto questo, occorre però capire come formalizzare i concetti di:

I Problema Computazionale;

I Algoritmo;

I Risorse e limiti al loro uso.

I La teoria che ne risulta è nient’altro che la complessità computazionale.

(3)

La Complessità Computazionale

I Uno degli scopi più importanti che l’informatica teorica is prefigge è la classificazione dei problemi computazionali rispetto alla quantità di risorse che la loro risoluzione richiede.

I In questo modo, è possibile comprendere l’intrinseca difficoltà dei problemi computazionali che ci troviamo a risolvere.

I Parimenti, si può in questo modo studiare quali siano i limiti del calcolo con risorse limitate.

I Per fare tutto questo, occorre però capire come formalizzare i concetti di:

I Problema Computazionale;

I Algoritmo;

I Risorse e limiti al loro uso.

I La teoria che ne risulta è nient’altro che la complessità computazionale.

(4)

La Complessità Computazionale

I Uno degli scopi più importanti che l’informatica teorica is prefigge è la classificazione dei problemi computazionali rispetto alla quantità di risorse che la loro risoluzione richiede.

I In questo modo, è possibile comprendere l’intrinseca difficoltà dei problemi computazionali che ci troviamo a risolvere.

I Parimenti, si può in questo modo studiare quali siano i limiti del calcolo con risorse limitate.

I Per fare tutto questo, occorre però capire come formalizzare i concetti di:

I Problema Computazionale;

I Algoritmo;

I Risorse e limiti al loro uso.

I La teoria che ne risulta è nient’altro che la complessità computazionale.

(5)

La Complessità Computazionale

I Uno degli scopi più importanti che l’informatica teorica is prefigge è la classificazione dei problemi computazionali rispetto alla quantità di risorse che la loro risoluzione richiede.

I In questo modo, è possibile comprendere l’intrinseca difficoltà dei problemi computazionali che ci troviamo a risolvere.

I Parimenti, si può in questo modo studiare quali siano i limiti del calcolo con risorse limitate.

I Per fare tutto questo, occorre però capire come formalizzare i concetti di:

I Problema Computazionale;

I Algoritmo;

I Risorse e limiti al loro uso.

I La teoria che ne risulta è nient’altro che la complessità computazionale.

(6)

La Complessità Computazionale

I Uno degli scopi più importanti che l’informatica teorica is prefigge è la classificazione dei problemi computazionali rispetto alla quantità di risorse che la loro risoluzione richiede.

I In questo modo, è possibile comprendere l’intrinseca difficoltà dei problemi computazionali che ci troviamo a risolvere.

I Parimenti, si può in questo modo studiare quali siano i limiti del calcolo con risorse limitate.

I Per fare tutto questo, occorre però capire come formalizzare i concetti di:

I Problema Computazionale;

I Algoritmo;

I Risorse e limiti al loro uso.

I La teoria che ne risulta è nient’altro che la complessità computazionale.

(7)

Problema Computazionale

I Tradizionalmente, i problemi di cui si occupa la complessità computazionale sono il calcolo di funzioni nella forma f : B → B dove B = {0, 1} è l’insieme di tutte le stringhe binarie.

I Perché?

B f B

Grafi Alberi Stringhe

.. .

Grafi Alberi Stringhe

.. .

I Spesso, ci si concentra sui problemi decisionali, cioè quelli in cui f (B) ⊆ {0, 1}.

I Tali problemi sono in corrispondenza biunivoca con i sottoinsiemi di B.

(8)

Problema Computazionale

I Tradizionalmente, i problemi di cui si occupa la complessità computazionale sono il calcolo di funzioni nella forma f : B → B dove B = {0, 1} è l’insieme di tutte le stringhe binarie.

I Perché?

B f B

Grafi Alberi Stringhe

.. .

Grafi Alberi Stringhe

.. .

I Spesso, ci si concentra sui problemi decisionali, cioè quelli in cui f (B) ⊆ {0, 1}.

I Tali problemi sono in corrispondenza biunivoca con i sottoinsiemi di B.

(9)

Problema Computazionale

I Tradizionalmente, i problemi di cui si occupa la complessità computazionale sono il calcolo di funzioni nella forma f : B → B dove B = {0, 1} è l’insieme di tutte le stringhe binarie.

I Perché?

B f B

Grafi Alberi Stringhe

.. .

Grafi Alberi Stringhe

.. .

I Spesso, ci si concentra sui problemi decisionali, cioè quelli in cui f (B) ⊆ {0, 1}.

I Tali problemi sono in corrispondenza biunivoca con i sottoinsiemi di B.

(10)

Problema Computazionale

I Tradizionalmente, i problemi di cui si occupa la complessità computazionale sono il calcolo di funzioni nella forma f : B → B dove B = {0, 1} è l’insieme di tutte le stringhe binarie.

I Perché?

B f B

Grafi Alberi Stringhe

.. .

Grafi Alberi Stringhe

.. .

I Spesso, ci si concentra sui problemi decisionali, cioè quelli in cui f (B) ⊆ {0, 1}.

I Tali problemi sono in corrispondenza biunivoca con i sottoinsiemi di B.

(11)

Problema Computazionale

I Tradizionalmente, i problemi di cui si occupa la complessità computazionale sono il calcolo di funzioni nella forma f : B → B dove B = {0, 1} è l’insieme di tutte le stringhe binarie.

I Perché?

B f B

Grafi Alberi Stringhe

.. .

Grafi Alberi Stringhe

.. .

I Spesso, ci si concentra sui problemi decisionali, cioè quelli in cui f (B) ⊆ {0, 1}.

I Tali problemi sono in corrispondenza biunivoca con i sottoinsiemi di B.

(12)

Dai Problemi agli Algoritmi

I Le funzioni incapsulano conoscenza dichiarativa e non imperativa

I Se f : B → B, allora f ⊆ B × B.

I Occorre cambiare punto di vista.

f (x) x f

I(x) · · · F (x)

I La relazione −→ non deve dipendere da x, e ogni passoA deve essere elementare.

I In tal caso A calcola f e scriviamoJAK = f .

I Agli algoritmi può essere data natura formale in tanti modi diversi.

I Macchine di Turing.

I Random Access Machines.

I . . .

(13)

Dai Problemi agli Algoritmi

I Le funzioni incapsulano conoscenza dichiarativa e non imperativa

I Se f : B → B, allora f ⊆ B × B.

I Occorre cambiare punto di vista.

f (x) x f

I(x) · · · F (x)

I La relazione −→ non deve dipendere da x, e ogni passoA deve essere elementare.

I In tal caso A calcola f e scriviamoJAK = f .

I Agli algoritmi può essere data natura formale in tanti modi diversi.

I Macchine di Turing.

I Random Access Machines.

I . . .

(14)

Dai Problemi agli Algoritmi

I Le funzioni incapsulano conoscenza dichiarativa e non imperativa

I Se f : B → B, allora f ⊆ B × B.

I Occorre cambiare punto di vista.

f (x) x f

I(x) · · · F (x)

I La relazione −→ non deve dipendere da x, e ogni passoA deve essere elementare.

I In tal caso A calcola f e scriviamoJAK = f .

I Agli algoritmi può essere data natura formale in tanti modi diversi.

I Macchine di Turing.

I Random Access Machines.

I . . .

(15)

Dai Problemi agli Algoritmi

I Le funzioni incapsulano conoscenza dichiarativa e non imperativa

I Se f : B → B, allora f ⊆ B × B.

I Occorre cambiare punto di vista.

f (x) x f

I(x) · · · F (x)

I La relazione −→ non deve dipendere da x, e ogni passoA deve essere elementare.

I In tal caso A calcola f e scriviamoJAK = f .

I Agli algoritmi può essere data natura formale in tanti modi diversi.

I Macchine di Turing.

I Random Access Machines.

I . . .

(16)

Dai Problemi agli Algoritmi

I Le funzioni incapsulano conoscenza dichiarativa e non imperativa

I Se f : B → B, allora f ⊆ B × B.

I Occorre cambiare punto di vista.

f (x) x f

I(x)

A

· · ·

A

F (x)

I La relazione −→ non deve dipendere da x, e ogni passoA deve essere elementare.

I In tal caso A calcola f e scriviamoJAK = f .

I Agli algoritmi può essere data natura formale in tanti modi diversi.

I Macchine di Turing.

I Random Access Machines.

I . . .

(17)

Dai Problemi agli Algoritmi

I Le funzioni incapsulano conoscenza dichiarativa e non imperativa

I Se f : B → B, allora f ⊆ B × B.

I Occorre cambiare punto di vista.

f (x) x f

I(x)

A

· · ·

A

F (x)

I La relazione −→ non deve dipendere da x, e ogni passoA deve essere elementare.

I In tal caso A calcola f e scriviamoJAK = f .

I Agli algoritmi può essere data natura formale in tanti modi diversi.

I Macchine di Turing.

I Random Access Machines.

I . . .

(18)

Dai Problemi agli Algoritmi

I Le funzioni incapsulano conoscenza dichiarativa e non imperativa

I Se f : B → B, allora f ⊆ B × B.

I Occorre cambiare punto di vista.

f (x) x f

I(x)

A

· · ·

A

F (x)

I La relazione −→ non deve dipendere da x, e ogni passoA deve essere elementare.

I In tal caso A calcola f e scriviamoJAK = f .

I Agli algoritmi può essere data natura formale in tanti modi diversi.

I Macchine di Turing.

I Random Access Machines.

I . . .

(19)

Misurare l’Uso delle Risorse

I Quali potrebbero essere le risorse di calcolo d’interesse?

I Tempo.

I Il tempo è modellato come il numero di transizioni necessarie ad arrivare a F (x) partendo da I(x).

I Certamente in questo modo otteniamo un’idealizzazione del vero tempo di calcolo, il quale ovviamente dipende dalla complessità di ogni singolo passo di calcolo.

I Il tempo che l’algoritmo A impiega sull’input x è indicato con TIMEA(x)

I Spazio.

I Lo spazio di calcolo è invece modellato come la massima lunghezza dei risultati intermedi necessari ad ottenre F (x) a partire da I(x).

I Non si tiene conto né dello spazio necessario a tener traccia di x, né di quello necessario a tener traccia di f (x).

I Il tempo che l’algoritmo A impiega sull’input x è indicato con SPACEA(x)

I La lunghezza di una stringa x è indicata con |x|.

(20)

Misurare l’Uso delle Risorse

I Quali potrebbero essere le risorse di calcolo d’interesse?

I Tempo.

I Il tempo è modellato come il numero di transizioni necessarie ad arrivare a F (x) partendo da I(x).

I Certamente in questo modo otteniamo un’idealizzazione del vero tempo di calcolo, il quale ovviamente dipende dalla complessità di ogni singolo passo di calcolo.

I Il tempo che l’algoritmo A impiega sull’input x è indicato con TIMEA(x)

I Spazio.

I Lo spazio di calcolo è invece modellato come la massima lunghezza dei risultati intermedi necessari ad ottenre F (x) a partire da I(x).

I Non si tiene conto né dello spazio necessario a tener traccia di x, né di quello necessario a tener traccia di f (x).

I Il tempo che l’algoritmo A impiega sull’input x è indicato con SPACEA(x)

I La lunghezza di una stringa x è indicata con |x|.

(21)

Misurare l’Uso delle Risorse

I Quali potrebbero essere le risorse di calcolo d’interesse?

I Tempo.

I Il tempo è modellato come il numero di transizioni necessarie ad arrivare a F (x) partendo da I(x).

I Certamente in questo modo otteniamo un’idealizzazione del vero tempo di calcolo, il quale ovviamente dipende dalla complessità di ogni singolo passo di calcolo.

I Il tempo che l’algoritmo A impiega sull’input x è indicato con TIMEA(x)

I Spazio.

I Lo spazio di calcolo è invece modellato come la massima lunghezza dei risultati intermedi necessari ad ottenre F (x) a partire da I(x).

I Non si tiene conto né dello spazio necessario a tener traccia di x, né di quello necessario a tener traccia di f (x).

I Il tempo che l’algoritmo A impiega sull’input x è indicato con SPACEA(x)

I La lunghezza di una stringa x è indicata con |x|.

(22)

Misurare l’Uso delle Risorse

I Quali potrebbero essere le risorse di calcolo d’interesse?

I Tempo.

I Il tempo è modellato come il numero di transizioni necessarie ad arrivare a F (x) partendo da I(x).

I Certamente in questo modo otteniamo un’idealizzazione del vero tempo di calcolo, il quale ovviamente dipende dalla complessità di ogni singolo passo di calcolo.

I Il tempo che l’algoritmo A impiega sull’input x è indicato con TIMEA(x)

I Spazio.

I Lo spazio di calcolo è invece modellato come la massima lunghezza dei risultati intermedi necessari ad ottenre F (x) a partire da I(x).

I Non si tiene conto né dello spazio necessario a tener traccia di x, né di quello necessario a tener traccia di f (x).

I Il tempo che l’algoritmo A impiega sull’input x è indicato con SPACEA(x)

I La lunghezza di una stringa x è indicata con |x|.

(23)

Classi di Complessità

I Possiamo prima di tutto definire delle classi concrete, parametriche su una funzione g : N → N.

DTIME (g) = {L ⊆ B | ∃A.JAK = L ∧ ∀x.TIMEA(x) ≤ g(|x|)};

DSPACE (g) = {L ⊆ B | ∃A.JAK = L ∧ ∀x.SPACEA(x) ≤ g(|x|)}.

I Possiamo poi definire vere e proprie classi di complessità, che permettono una classificazione dei problemi più

informativa:

P = [

g∈POLY

DTIME (g) PSPACE = [

g∈POLY

DSPACE (g)

L = [

g∈LOGA

DSPACE (g)

dove POLY è la classe dei polinomi e LOGA è la classe delle funzioni logaritmiche.

(24)

Nondeterminismo

I Se il problema computazionale è decisionale, ha senso pensare ad algoritmi che non siano deterministici.

I Per esempio, potremmo avere un comportamento puramente nondeterministico.

f (x) x f

I(x)

F

1

(x) A

F

n

(x)

.. .

f (x) = 1 se e solo se esiste i con F

i

(x) ` e finale.

I In tal caso A decide f e scriviamo JAK = f .

I Si possono definire poi NDTIME (g) e NP, seguendo lo stesso schema visto precedentemente per gli algoritmi deterministici.

(25)

Nondeterminismo

I Se il problema computazionale è decisionale, ha senso pensare ad algoritmi che non siano deterministici.

I Per esempio, potremmo avere un comportamento puramente nondeterministico.

f (x) x f

I(x)

F

1

(x) A

F

n

(x)

.. .

f (x) = 1 se e solo se esiste i con F

i

(x) ` e finale.

I In tal caso A decide f e scriviamo JAK = f .

I Si possono definire poi NDTIME (g) e NP, seguendo lo stesso schema visto precedentemente per gli algoritmi deterministici.

(26)

Nondeterminismo

I Se il problema computazionale è decisionale, ha senso pensare ad algoritmi che non siano deterministici.

I Per esempio, potremmo avere un comportamento puramente nondeterministico.

f (x) x f

I(x)

F

1

(x) A

F

n

(x)

. ..

f (x) = 1 se e solo se esiste i con F

i

(x) ` e finale.

I In tal caso A decide f e scriviamo JAK = f .

I Si possono definire poi NDTIME (g) e NP, seguendo lo stesso schema visto precedentemente per gli algoritmi deterministici.

(27)

Nondeterminismo

I Se il problema computazionale è decisionale, ha senso pensare ad algoritmi che non siano deterministici.

I Per esempio, potremmo avere un comportamento puramente nondeterministico.

f (x) x f

I(x)

F

1

(x) A

F

n

(x)

. ..

f (x) = 1 se e solo se esiste i con F

i

(x) ` e finale.

I In tal caso A decide f e scriviamo JAK = f .

I Si possono definire poi NDTIME (g) e NP, seguendo lo stesso schema visto precedentemente per gli algoritmi deterministici.

(28)

Nondeterminismo

I Se il problema computazionale è decisionale, ha senso pensare ad algoritmi che non siano deterministici.

I Per esempio, potremmo avere un comportamento puramente nondeterministico.

f (x) x f

I(x)

F

1

(x) A

F

n

(x)

. ..

f (x) = 1 se e solo se esiste i con F

i

(x) ` e finale.

I In tal caso A decide f e scriviamo JAK = f .

I Si possono definire poi NDTIME (g) e NP, seguendo lo stesso schema visto precedentemente per gli algoritmi deterministici.

(29)

Nondeterminismo

I Se il problema computazionale è decisionale, ha senso pensare ad algoritmi che non siano deterministici.

I Per esempio, potremmo avere un comportamento puramente nondeterministico.

f (x) x f

I(x)

F

1

(x) A

F

n

(x)

. ..

f (x) = 1 se e solo se esiste i dove F

i

(x) ` e finale.

I In tal caso A decide f e scriviamo JAK = f .

I Si possono definire poi NDTIME (g) e NP, seguendo lo stesso schema visto precedentemente per gli algoritmi deterministici.

(30)

Nondeterminismo

I Se il problema computazionale è decisionale, ha senso pensare ad algoritmi che non siano deterministici.

I Per esempio, potremmo avere un comportamento puramente nondeterministico.

f (x) x f

I(x)

F

1

(x) A

F

n

(x)

. ..

f (x) = 1 se e solo se esiste i dove F

i

(x) ` e finale.

I In tal caso A decide f e scriviamo JAK = f .

I Si possono definire poi NDTIME (g) e NP, seguendo lo stesso schema visto precedentemente per gli algoritmi deterministici.

(31)

Nondeterminismo

I Se il problema computazionale è decisionale, ha senso pensare ad algoritmi che non siano deterministici.

I Per esempio, potremmo avere un comportamento puramente nondeterministico.

f (x) x f

I(x)

F

1

(x) A

F

n

(x)

. ..

f (x) = 1 se e solo se esiste i dove F

i

(x) ` e finale.

I In tal caso A decide f e scriviamo JAK = f .

I Si possono definire poi NDTIME (g) e NP, seguendo lo stesso schema visto precedentemente per gli algoritmi deterministici.

(32)

Una Teoria Giovane

I Con tecniche abbastanza semplici si riesce a dimostrare che L ⊆ P ⊆ NP ⊆ PSPACE.

I Con tecniche altrettanto semplici, si può concludere che L ( PSPACE.

I A tutt’oggi, non è però chiaro quali tra le tre inclusioni di cui sopra siano strette. Almeno una deve essere stretta, ma potrebbero anche essere tutte strette.

I Più di quarant’anni di sforzi non hanno portato ad alcun decisivo progresso nella risoluzione di questo problema.

I La comunità scientifica è convinta che servano tecniche diverse da quelle puramente combinatoriche.

(33)

Una Teoria Giovane

I Con tecniche abbastanza semplici si riesce a dimostrare che L ⊆ P ⊆ NP ⊆ PSPACE.

I Con tecniche altrettanto semplici, si può concludere che L ( PSPACE.

I A tutt’oggi, non è però chiaro quali tra le tre inclusioni di cui sopra siano strette. Almeno una deve essere stretta, ma potrebbero anche essere tutte strette.

I Più di quarant’anni di sforzi non hanno portato ad alcun decisivo progresso nella risoluzione di questo problema.

I La comunità scientifica è convinta che servano tecniche diverse da quelle puramente combinatoriche.

(34)

Una Teoria Giovane

I Con tecniche abbastanza semplici si riesce a dimostrare che L ⊆ P ⊆ NP ⊆ PSPACE.

I Con tecniche altrettanto semplici, si può concludere che L ( PSPACE.

I A tutt’oggi, non è però chiaro quali tra le tre inclusioni di cui sopra siano strette. Almeno una deve essere stretta, ma potrebbero anche essere tutte strette.

I Più di quarant’anni di sforzi non hanno portato ad alcun decisivo progresso nella risoluzione di questo problema.

I La comunità scientifica è convinta che servano tecniche diverse da quelle puramente combinatoriche.

(35)

Una Teoria Giovane

I Con tecniche abbastanza semplici si riesce a dimostrare che L ⊆ P ⊆ NP ⊆ PSPACE.

I Con tecniche altrettanto semplici, si può concludere che L ( PSPACE.

I A tutt’oggi, non è però chiaro quali tra le tre inclusioni di cui sopra siano strette. Almeno una deve essere stretta, ma potrebbero anche essere tutte strette.

I Più di quarant’anni di sforzi non hanno portato ad alcun decisivo progresso nella risoluzione di questo problema.

I La comunità scientifica è convinta che servano tecniche diverse da quelle puramente combinatoriche.

(36)

Una Teoria Giovane

I Con tecniche abbastanza semplici si riesce a dimostrare che L ⊆ P ⊆ NP ⊆ PSPACE.

I Con tecniche altrettanto semplici, si può concludere che L ( PSPACE.

I A tutt’oggi, non è però chiaro quali tra le tre inclusioni di cui sopra siano strette. Almeno una deve essere stretta, ma potrebbero anche essere tutte strette.

I Più di quarant’anni di sforzi non hanno portato ad alcun decisivo progresso nella risoluzione di questo problema.

I La comunità scientifica è convinta che servano tecniche diverse da quelle puramente combinatoriche.

(37)

Grafi Come Strutture

I La logica predicativa offre un modo di parlare di insiemi di oggetti, ovvero di linguaggi.

I Supponiamo di utilizzare un vocabolario costituito dal simbolo binario di uguaglianza = e da un simbolo binario E.

I Consideriamo poi la seguente formula:

BIN ≡ ∀x.∃y.∃z.∀w.(y 6= z ∧ E(x, y) ∧ E(x, z))

∧ (E(x, w) → w = y ∨ w = z).

I Consideriamo universi finiti nella forma An= {1, . . . , n}. Un’interpretazione I per tale universo consta,

fondamentalmente, di una relazione binaria EI su An.

I L’uguaglianza è sempre interpretata con la relazione identica.

I (An, I) è un grafo.

I Ogni formula nel vocabolario costituito da E e dall’uguaglianza può quindi essere vista come un riconoscitore di grafi.

(38)

Grafi Come Strutture

I La logica predicativa offre un modo di parlare di insiemi di oggetti, ovvero di linguaggi.

I Supponiamo di utilizzare un vocabolario costituito dal simbolo binario di uguaglianza = e da un simbolo binario E.

I Consideriamo poi la seguente formula:

BIN ≡ ∀x.∃y.∃z.∀w.(y 6= z ∧ E(x, y) ∧ E(x, z))

∧ (E(x, w) → w = y ∨ w = z).

I Consideriamo universi finiti nella forma An= {1, . . . , n}. Un’interpretazione I per tale universo consta,

fondamentalmente, di una relazione binaria EI su An.

I L’uguaglianza è sempre interpretata con la relazione identica.

I (An, I) è un grafo.

I Ogni formula nel vocabolario costituito da E e dall’uguaglianza può quindi essere vista come un riconoscitore di grafi.

(39)

Grafi Come Strutture

I La logica predicativa offre un modo di parlare di insiemi di oggetti, ovvero di linguaggi.

I Supponiamo di utilizzare un vocabolario costituito dal simbolo binario di uguaglianza = e da un simbolo binario E.

I Consideriamo poi la seguente formula:

BIN ≡ ∀x.∃y.∃z.∀w.(y 6= z ∧ E(x, y) ∧ E(x, z))

∧ (E(x, w) → w = y ∨ w = z).

I Consideriamo universi finiti nella forma An= {1, . . . , n}. Un’interpretazione I per tale universo consta,

fondamentalmente, di una relazione binaria EI su An.

I L’uguaglianza è sempre interpretata con la relazione identica.

I (An, I) è un grafo.

I Ogni formula nel vocabolario costituito da E e dall’uguaglianza può quindi essere vista come un riconoscitore di grafi.

(40)

Grafi Come Strutture

I La logica predicativa offre un modo di parlare di insiemi di oggetti, ovvero di linguaggi.

I Supponiamo di utilizzare un vocabolario costituito dal simbolo binario di uguaglianza = e da un simbolo binario E.

I Consideriamo poi la seguente formula:

BIN ≡ ∀x.∃y.∃z.∀w.(y 6= z ∧ E(x, y) ∧ E(x, z))

∧ (E(x, w) → w = y ∨ w = z).

I Consideriamo universi finiti nella forma An= {1, . . . , n}.

Un’interpretazione I per tale universo consta,

fondamentalmente, di una relazione binaria EI su An.

I L’uguaglianza è sempre interpretata con la relazione identica.

I (An, I) è un grafo.

I Ogni formula nel vocabolario costituito da E e dall’uguaglianza può quindi essere vista come un riconoscitore di grafi.

(41)

Grafi Come Strutture

I La logica predicativa offre un modo di parlare di insiemi di oggetti, ovvero di linguaggi.

I Supponiamo di utilizzare un vocabolario costituito dal simbolo binario di uguaglianza = e da un simbolo binario E.

I Consideriamo poi la seguente formula:

BIN ≡ ∀x.∃y.∃z.∀w.(y 6= z ∧ E(x, y) ∧ E(x, z))

∧ (E(x, w) → w = y ∨ w = z).

I Consideriamo universi finiti nella forma An= {1, . . . , n}.

Un’interpretazione I per tale universo consta,

fondamentalmente, di una relazione binaria EI su An.

I L’uguaglianza è sempre interpretata con la relazione identica.

I (An, I) è un grafo.

I Ogni formula nel vocabolario costituito da E e dall’uguaglianza può quindi essere vista come un riconoscitore di grafi.

(42)

Complessità Descrittiva

Formule Logiche Linguaggi

Interpretazioni Stringhe

I Esistono logiche che catturano, che caratterizzano, classi di complessità importanti come P o NP?

I È possibile capire qualcosa di profondo circa le classi di complessità indagandone la natura logica?

I Il resto di questa parte del Corso sarà dedicato a dare una risposta alla prima di queste domande.

(43)

Complessità Descrittiva

Formule Logiche Linguaggi

Interpretazioni Stringhe

I Esistono logiche che catturano, che caratterizzano, classi di complessità importanti come P o NP?

I È possibile capire qualcosa di profondo circa le classi di complessità indagandone la natura logica?

I Il resto di questa parte del Corso sarà dedicato a dare una risposta alla prima di queste domande.

(44)

Complessità Descrittiva

Formule Logiche Linguaggi

Interpretazioni Stringhe

I Esistono logiche che catturano, che caratterizzano, classi di complessità importanti come P o NP?

I È possibile capire qualcosa di profondo circa le classi di complessità indagandone la natura logica?

I Il resto di questa parte del Corso sarà dedicato a dare una risposta alla prima di queste domande.

(45)

Interpretazioni come Stringhe

I Per dare concretezza alla complessità descrittiva, occorre prima di tutto capire come le interpretazioni possano essere descritte in modo compatto.

I Supponiamo di lavorare con l’universo finito An= {1, . . . , n}.

I Supponiamo che un vocabolario sia costituito da m simboli predicativi P1, . . . , Pm e da k simboli di funzione f1, . . . , fk, tutti di arietà 0.

I Una qualunque interpretazione I per tale vocabolario può essere quindi descritta da una stringa binn(I) ∈ B dove

binn(I) = binn(P1) . . . binn(Pn)binn(f1) . . . binn(fk) e:

I Per ogni 1 ≤ i ≤ m, la stringa binn(Pi) ha lunghezza pari a nar(Pi), dove ar(Pi) è l’arietà di Pi. Tale stringa specifica quando ogni possibile tupla fa parte di (Pi)I oppure no.

I Per ogni 1 ≤ i ≤ k, la stringa binn(fi) ha lunghezza pari a dlog2(n)e e specifica quale elemento di An interpreta fi.

(46)

Interpretazioni come Stringhe

I Per dare concretezza alla complessità descrittiva, occorre prima di tutto capire come le interpretazioni possano essere descritte in modo compatto.

I Supponiamo di lavorare con l’universo finito An= {1, . . . , n}.

I Supponiamo che un vocabolario sia costituito da m simboli predicativi P1, . . . , Pm e da k simboli di funzione f1, . . . , fk, tutti di arietà 0.

I Una qualunque interpretazione I per tale vocabolario può essere quindi descritta da una stringa binn(I) ∈ B dove

binn(I) = binn(P1) . . . binn(Pn)binn(f1) . . . binn(fk) e:

I Per ogni 1 ≤ i ≤ m, la stringa binn(Pi) ha lunghezza pari a nar(Pi), dove ar(Pi) è l’arietà di Pi. Tale stringa specifica quando ogni possibile tupla fa parte di (Pi)I oppure no.

I Per ogni 1 ≤ i ≤ k, la stringa binn(fi) ha lunghezza pari a dlog2(n)e e specifica quale elemento di An interpreta fi.

(47)

Interpretazioni come Stringhe

I Per dare concretezza alla complessità descrittiva, occorre prima di tutto capire come le interpretazioni possano essere descritte in modo compatto.

I Supponiamo di lavorare con l’universo finito An= {1, . . . , n}.

I Supponiamo che un vocabolario sia costituito da m simboli predicativi P1, . . . , Pm e da k simboli di funzione f1, . . . , fk, tutti di arietà 0.

I Una qualunque interpretazione I per tale vocabolario può essere quindi descritta da una stringa binn(I) ∈ B dove

binn(I) = binn(P1) . . . binn(Pn)binn(f1) . . . binn(fk) e:

I Per ogni 1 ≤ i ≤ m, la stringa binn(Pi) ha lunghezza pari a nar(Pi), dove ar(Pi) è l’arietà di Pi. Tale stringa specifica quando ogni possibile tupla fa parte di (Pi)I oppure no.

I Per ogni 1 ≤ i ≤ k, la stringa binn(fi) ha lunghezza pari a dlog2(n)e e specifica quale elemento di An interpreta fi.

(48)

Interpretazioni come Stringhe

I Per dare concretezza alla complessità descrittiva, occorre prima di tutto capire come le interpretazioni possano essere descritte in modo compatto.

I Supponiamo di lavorare con l’universo finito An= {1, . . . , n}.

I Supponiamo che un vocabolario sia costituito da m simboli predicativi P1, . . . , Pm e da k simboli di funzione f1, . . . , fk, tutti di arietà 0.

I Una qualunque interpretazione I per tale vocabolario può essere quindi descritta da una stringa binn(I) ∈ B dove

binn(I) = binn(P1) . . . binn(Pn)binn(f1) . . . binn(fk) e:

I Per ogni 1 ≤ i ≤ m, la stringa binn(Pi) ha lunghezza pari a nar(Pi), dove ar(Pi) è l’arietà di Pi. Tale stringa specifica quando ogni possibile tupla fa parte di (Pi)I oppure no.

I Per ogni 1 ≤ i ≤ k, la stringa binn(fi) ha lunghezza pari a dlog2(n)e e specifica quale elemento di An interpreta fi.

(49)

Formule come Funzioni

I Una formula predicativa F si dice chiusa quando nessuna variabile occorre libera in F .

I Ad ogni formula predicativa chiusa F si può far corrispondere un sottoinsieme struct(F ) come segue:

struct(F ) = {binn(I) | (An, I) |= F } ⊆ B.

I A questo punto ci si può chiedere quale sia la classe di linguaggi che una certa logica caratterizza.

I Nel caso della logica predicativa abbiamo per esempio FO = {struct(F ) | F è una formula predicativa chiusa}

(50)

La Logica Predicativa è Interessante?

I Una domanda a questo punto molto interessante è la seguente: FO coincide con una classe interessante?

I Per fare in modo che la logica predicativa abbia un minimo di potere espressivo, occorre assumere che il vocabolario includa:

I Tre simboli funzionali di arietà nulla chiamati 0,1, max , interpretati nel modo ovvio.

I Due simboli predicativi binari ≤ e BIT , anch’essi interpretati nel modo ovvio.

Lemma FO ⊆ L. Lemma

PARITY /∈ FO. Teorema FO ( L.

(51)

La Logica Predicativa è Interessante?

I Una domanda a questo punto molto interessante è la seguente: FO coincide con una classe interessante?

I Per fare in modo che la logica predicativa abbia un minimo di potere espressivo, occorre assumere che il vocabolario includa:

I Tre simboli funzionali di arietà nulla chiamati 0,1, max , interpretati nel modo ovvio.

I Due simboli predicativi binari ≤ e BIT , anch’essi interpretati nel modo ovvio.

Lemma FO ⊆ L. Lemma

PARITY /∈ FO. Teorema FO ( L.

(52)

La Logica Predicativa è Interessante?

I Una domanda a questo punto molto interessante è la seguente: FO coincide con una classe interessante?

I Per fare in modo che la logica predicativa abbia un minimo di potere espressivo, occorre assumere che il vocabolario includa:

I Tre simboli funzionali di arietà nulla chiamati 0,1, max , interpretati nel modo ovvio.

I Due simboli predicativi binari ≤ e BIT , anch’essi interpretati nel modo ovvio.

Lemma FO ⊆ L.

Lemma

PARITY /∈ FO.

Teorema FO ( L.

(53)

Logica Predicativa del Secondo Ordine

I Conviene a questo punto cercare una logica più espressiva.

I Una scelta naturale è quella di considerare un’estensione delle formule con variabili al second’ordine, che indicano una qualunque relazione, anziché un oggetto:

F ::= . . .

|

Xn(t1, . . . , tn)

|

∃Xn.F

|

∀Xn.F.

I La semantica di queste formule segue quella della logica predicativa, ma occorre che ξ assegni una relazione n-aria ad ogni variabile Xn.

I In questo modo:

(A, I), ξ |= Xn(t1, . . . , tn) sse (Jt1K

(A,I)

ξ , . . . ,JtnK

(A,I)

ξ ) ∈ ξ(Xn) (A, I), ξ |= ∃Xn.F sse (A, I), ξ[Xn:= R] |= F

per qualche R ⊆ An (A, I), ξ |= ∀Xn.F sse (A, I), ξ[Xn:= R] |= F

per tutte le R ⊆ An ..

.

(54)

Il Teorema di Fagin

I La logica al second’ordine è troppo potente per i nostri scopi.

I Ne esiste però un frammento molto interessante, che chiamiamo logica al second’ordine esistenziale, le cui formule sono le formule che possono essere scritte nella forma

∃Xn1. . . . ∃Xnm.F

dove F è una formula predicativa al prim’ordine.

I A questo punto è facile generalizzare quanto visto in precedenza per la logica predicativa:

∃SO = {struct(F ) | F è una formula

al second’ordine esistenziale} Teorema (Fagin)

∃SO = NP

(55)

Il Teorema di Fagin

I La logica al second’ordine è troppo potente per i nostri scopi.

I Ne esiste però un frammento molto interessante, che chiamiamo logica al second’ordine esistenziale, le cui formule sono le formule che possono essere scritte nella forma

∃Xn1. . . . ∃Xnm.F

dove F è una formula predicativa al prim’ordine.

I A questo punto è facile generalizzare quanto visto in precedenza per la logica predicativa:

∃SO = {struct(F ) | F è una formula

al second’ordine esistenziale} Teorema (Fagin)

∃SO = NP

(56)

Il Teorema di Fagin

I La logica al second’ordine è troppo potente per i nostri scopi.

I Ne esiste però un frammento molto interessante, che chiamiamo logica al second’ordine esistenziale, le cui formule sono le formule che possono essere scritte nella forma

∃Xn1. . . . ∃Xnm.F

dove F è una formula predicativa al prim’ordine.

I A questo punto è facile generalizzare quanto visto in precedenza per la logica predicativa:

∃SO = {struct(F ) | F è una formula

al second’ordine esistenziale}

Teorema (Fagin)

∃SO = NP

(57)

Il Teorema di Fagin

I La logica al second’ordine è troppo potente per i nostri scopi.

I Ne esiste però un frammento molto interessante, che chiamiamo logica al second’ordine esistenziale, le cui formule sono le formule che possono essere scritte nella forma

∃Xn1. . . . ∃Xnm.F

dove F è una formula predicativa al prim’ordine.

I A questo punto è facile generalizzare quanto visto in precedenza per la logica predicativa:

∃SO = {struct(F ) | F è una formula

al second’ordine esistenziale}

Teorema (Fagin)

∃SO = NP

(58)

E il Tempo Polinomiale Deterministico?

I La logica predicativa è, come abbiamo visto, troppo debole per i nostri scopi.

I D’altro canto, quella al second’ordine risulta troppo potente.

I Cosa serve alla logica predicativa per catturare esattamente il tempo polinomiale deterministico?

I Consieriamo il vocabolario relativo ai grafi, ossia quello in cui l’unico simbolo relazionale E è binario e rappresenta l’adiacenza tra nodi.

I Il fatto che un nodo y sia raggiungibile in un numero non specificato di passi da x non è esprimibile in logica predicativa.

I Ci vorrebbe qualcosa come un nuovo predicato, cioè “il più piccolo” tra tutti quelli che soddisfano la seguente

“equazione”:

E(x, y) ≡ x = y ∨ ∃z.(E(x, z) ∧ E(z, y))

(59)

E il Tempo Polinomiale Deterministico?

I La logica predicativa è, come abbiamo visto, troppo debole per i nostri scopi.

I D’altro canto, quella al second’ordine risulta troppo potente.

I Cosa serve alla logica predicativa per catturare esattamente il tempo polinomiale deterministico?

I Consieriamo il vocabolario relativo ai grafi, ossia quello in cui l’unico simbolo relazionale E è binario e rappresenta l’adiacenza tra nodi.

I Il fatto che un nodo y sia raggiungibile in un numero non specificato di passi da x non è esprimibile in logica predicativa.

I Ci vorrebbe qualcosa come un nuovo predicato, cioè “il più piccolo” tra tutti quelli che soddisfano la seguente

“equazione”:

E(x, y) ≡ x = y ∨ ∃z.(E(x, z) ∧ E(z, y))

(60)

E il Tempo Polinomiale Deterministico?

I La logica predicativa è, come abbiamo visto, troppo debole per i nostri scopi.

I D’altro canto, quella al second’ordine risulta troppo potente.

I Cosa serve alla logica predicativa per catturare esattamente il tempo polinomiale deterministico?

I Consieriamo il vocabolario relativo ai grafi, ossia quello in cui l’unico simbolo relazionale E è binario e rappresenta l’adiacenza tra nodi.

I Il fatto che un nodo y sia raggiungibile in un numero non specificato di passi da x non è esprimibile in logica predicativa.

I Ci vorrebbe qualcosa come un nuovo predicato, cioè “il più piccolo” tra tutti quelli che soddisfano la seguente

“equazione”:

E(x, y) ≡ x = y ∨ ∃z.(E(x, z) ∧ E(z, y))

(61)

E il Tempo Polinomiale Deterministico?

I La logica predicativa è, come abbiamo visto, troppo debole per i nostri scopi.

I D’altro canto, quella al second’ordine risulta troppo potente.

I Cosa serve alla logica predicativa per catturare esattamente il tempo polinomiale deterministico?

I Consieriamo il vocabolario relativo ai grafi, ossia quello in cui l’unico simbolo relazionale E è binario e rappresenta l’adiacenza tra nodi.

I Il fatto che un nodo y sia raggiungibile in un numero non specificato di passi da x non è esprimibile in logica predicativa.

I Ci vorrebbe qualcosa come un nuovo predicato, cioè “il più piccolo” tra tutti quelli che soddisfano la seguente

“equazione”:

E(x, y) ≡ x = y ∨ ∃z.(E(x, z) ∧ E(z, y))

(62)

Formule Positive e Loro Minimi Punti Fissi

I Consideriamo un formula predicativa al prim’ordine F in cui le variabili libere sono:

I Una variabile al second’ordine Xm;

I m variabili al prim’ordine x1, . . . , xm.

I Tale formula predicativa si dice Xm-positiva se ogni occorrenza di Xm in F è nello scope di un numero pari di negazioni.

I Data un’interpretazione I per An, possiamo pensare a F come ad un funzionale FI su P(Amn), ossia il seguente:

D 7−→{(a1, . . . , am) ∈ Im | (An, I), ξ |= F, dove ξ(Xm) = D e ξ(xi) = ai}

Lemma

Per ogni F che sia Xm-positiva, il funzionale FI è monotono, e ammette quindi un punto fisso µIXm(x1, . . . , xm).F .

(63)

Formule Positive e Loro Minimi Punti Fissi

I Consideriamo un formula predicativa al prim’ordine F in cui le variabili libere sono:

I Una variabile al second’ordine Xm;

I m variabili al prim’ordine x1, . . . , xm.

I Tale formula predicativa si dice Xm-positiva se ogni occorrenza di Xm in F è nello scope di un numero pari di negazioni.

I Data un’interpretazione I per An, possiamo pensare a F come ad un funzionale FI su P(Amn), ossia il seguente:

D 7−→{(a1, . . . , am) ∈ Im | (An, I), ξ |= F, dove ξ(Xm) = D e ξ(xi) = ai}

Lemma

Per ogni F che sia Xm-positiva, il funzionale FI è monotono, e ammette quindi un punto fisso µIXm(x1, . . . , xm).F .

(64)

Formule Positive e Loro Minimi Punti Fissi

I Consideriamo un formula predicativa al prim’ordine F in cui le variabili libere sono:

I Una variabile al second’ordine Xm;

I m variabili al prim’ordine x1, . . . , xm.

I Tale formula predicativa si dice Xm-positiva se ogni occorrenza di Xm in F è nello scope di un numero pari di negazioni.

I Data un’interpretazione I per An, possiamo pensare a F come ad un funzionale FI su P(Amn), ossia il seguente:

D 7−→{(a1, . . . , am) ∈ Im | (An, I), ξ |= F, dove ξ(Xm) = D e ξ(xi) = ai}

Lemma

Per ogni F che sia Xm-positiva, il funzionale FI è monotono, e ammette quindi un punto fisso µIXm(x1, . . . , xm).F .

(65)

Logica Predicativa e Minimi Punti Fissi

I Le formule della logica predicativa con minimi punti fissi sono le stesse della logica predicativa al prim’ordine, ma tra i simboli predicativi ve ne sono anche nella forma

LFP (Xm, x1, . . . , xm, F ) dove F è una formula Xm-positiva.

I Alle nuove formule si può dare semantica nel modo seguente:

(A, I),ξ |= LFP (Xm, x1, . . . , xm, F )(t1, . . . , tm) sse (Jt1K

(A,I)

ξ , . . . ,JtmK

(A,I)

ξ ) ∈ µIXm(x1, . . . , xm).F. I A questo punto

FO (LFP ) = {struct(F ) | F è una formula

predicativa con minimi punti fissi} Teorema (Immerman, Vardi)

FO (LFP ) = P

(66)

Logica Predicativa e Minimi Punti Fissi

I Le formule della logica predicativa con minimi punti fissi sono le stesse della logica predicativa al prim’ordine, ma tra i simboli predicativi ve ne sono anche nella forma

LFP (Xm, x1, . . . , xm, F ) dove F è una formula Xm-positiva.

I Alle nuove formule si può dare semantica nel modo seguente:

(A, I),ξ |= LFP (Xm, x1, . . . , xm, F )(t1, . . . , tm) sse (Jt1K

(A,I)

ξ , . . . ,JtmK

(A,I)

ξ ) ∈ µIXm(x1, . . . , xm).F.

I A questo punto

FO (LFP ) = {struct(F ) | F è una formula

predicativa con minimi punti fissi} Teorema (Immerman, Vardi)

FO (LFP ) = P

(67)

Logica Predicativa e Minimi Punti Fissi

I Le formule della logica predicativa con minimi punti fissi sono le stesse della logica predicativa al prim’ordine, ma tra i simboli predicativi ve ne sono anche nella forma

LFP (Xm, x1, . . . , xm, F ) dove F è una formula Xm-positiva.

I Alle nuove formule si può dare semantica nel modo seguente:

(A, I),ξ |= LFP (Xm, x1, . . . , xm, F )(t1, . . . , tm) sse (Jt1K

(A,I)

ξ , . . . ,JtmK

(A,I)

ξ ) ∈ µIXm(x1, . . . , xm).F.

I A questo punto

FO (LFP ) = {struct(F ) | F è una formula

predicativa con minimi punti fissi}

Teorema (Immerman, Vardi) FO (LFP ) = P

(68)

Logica Predicativa e Minimi Punti Fissi

I Le formule della logica predicativa con minimi punti fissi sono le stesse della logica predicativa al prim’ordine, ma tra i simboli predicativi ve ne sono anche nella forma

LFP (Xm, x1, . . . , xm, F ) dove F è una formula Xm-positiva.

I Alle nuove formule si può dare semantica nel modo seguente:

(A, I),ξ |= LFP (Xm, x1, . . . , xm, F )(t1, . . . , tm) sse (Jt1K

(A,I)

ξ , . . . ,JtmK

(A,I)

ξ ) ∈ µIXm(x1, . . . , xm).F.

I A questo punto

FO (LFP ) = {struct(F ) | F è una formula

predicativa con minimi punti fissi}

Teorema (Immerman, Vardi) FO (LFP ) = P

(69)

In Conclusione

Corollary

P = NP se e solo se FO (LFP ) = ∃SO .

I In questo modo, un problema di complessità può essere ridotto ad un problema riguardante l’espressività di due logiche.

I Se si riuscisse a dimostrare che la quantificazione

esistenziale al second’ordine non può essere espressa con i punti fissi. . .

I A tutt’oggi, non si è ancora riusciti a dimostrare alcunché, purtroppo.

(70)

In Conclusione

Corollary

P = NP se e solo se FO (LFP ) = ∃SO .

I In questo modo, un problema di complessità può essere ridotto ad un problema riguardante l’espressività di due logiche.

I Se si riuscisse a dimostrare che la quantificazione

esistenziale al second’ordine non può essere espressa con i punti fissi. . .

I A tutt’oggi, non si è ancora riusciti a dimostrare alcunché, purtroppo.

(71)

In Conclusione

Corollary

P = NP se e solo se FO (LFP ) = ∃SO .

I In questo modo, un problema di complessità può essere ridotto ad un problema riguardante l’espressività di due logiche.

I Se si riuscisse a dimostrare che la quantificazione

esistenziale al second’ordine non può essere espressa con i punti fissi. . .

I A tutt’oggi, non si è ancora riusciti a dimostrare alcunché, purtroppo.

(72)

In Conclusione

Corollary

P = NP se e solo se FO (LFP ) = ∃SO .

I In questo modo, un problema di complessità può essere ridotto ad un problema riguardante l’espressività di due logiche.

I Se si riuscisse a dimostrare che la quantificazione

esistenziale al second’ordine non può essere espressa con i punti fissi. . .

I A tutt’oggi, non si è ancora riusciti a dimostrare alcunché, purtroppo.

Riferimenti

Documenti correlati

Così ad esempio, alla metà degli anni '90 del secolo scorso, due antropologi di rilievo come Marc Augè e Clifford Geertz, con un background culturale differente,

This paper reviews the major (Calcium, Phosphorus, Potassium, Sodium, Chlorine, Sulphur, Magnesium) and the trace elements (Iron, Copper, Cobalt, Iodine, Manganese, Zync,

1) Data una matrice rettangolare di interi di dimensione m x n, visualizzare le somme degli elementi di ogni riga. 2) Data una matrice quadrata di dimensione n, visualizzare

Esercizio 1 Considera il seguente metodo, che restituisce il massimo valore in un array di interi. Effettuare un’analisi di complessità asintotica del caso peggiore, ed

I Questo è un corso pensato per gli studenti del primo anno della Laurea Magistrale in Informatica.. I Può anche essere seguito da studenti di altri corsi di laurea che abbiano

I Nel momento in cui progettiamo un linguaggio per scrivere query, quindi, dovremmo essere sicuri che, almeno, le query possano avere questa semantica?. I Domanda importante:

I Il fatto che tra le possibili risposte di A ci sia anche maybe dipende dal fatto che il problema di verificare se S soddisfa P è spesso indecidibile.. I In tal caso non si può

● Fare riferimento alla pagina del corso per sapere di volta in volta quale è il proprio turno.. Per evitare i disagi che si sono verificati negli anni precedenti non saranno