• 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,

● 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

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ò

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