Informatica Generale Susanna Pelagatti email susannadi unipi it

  • Slides: 55
Download presentation
Informatica Generale Susanna Pelagatti email: susanna@di. unipi. it Ricevimento: Mercoledì ore 14. 30 -17.

Informatica Generale Susanna Pelagatti email: susanna@di. unipi. it Ricevimento: Mercoledì ore 14. 30 -17. 30 presso Dipartimento di Informatica, Via Buonarroti, 2 stanza 346 DE Tel. 050. 2212. 772 o per posta elettronica Pagina web del corso: http: //www. di. unipi. it/~susanna/IG 02/ 1

Come si avvia un computer. . . Dove è contenuto il SO ? Come

Come si avvia un computer. . . Dove è contenuto il SO ? Come si attiva? 2

Al momento dell’accensione …. • La RAM è vuota (è volatile!) • Il processore

Al momento dell’accensione …. • La RAM è vuota (è volatile!) • Il processore è capace di eseguire solo programmi contenuti nella RAM • Il sistema operativo è memorizzato su disco • …. ? ? ? ……. – Chi inizia l’esecuzione del SO e carica in RAM il primo programma da eseguire? – Chi visualizza messaggi sullo schermo? 3

BIOS (Basic Input Output System) • Risiede in una memoria speciale, non volatile in

BIOS (Basic Input Output System) • Risiede in una memoria speciale, non volatile in sola lettura (ROM) – è scritto al momento della costruzione del computer e non modificabile • È un programma che permette di – identificare le caratteristiche dell’hw della macchina (processore, memoria, periferiche) – identificare la parte di disco dove si trova l’SO – caricare in RAM le parti essenziali del sistema operativo e mandarlo in esecuzione 4

Le reti di calcolatori 5

Le reti di calcolatori 5

Cos’è una rete di calcolatori ? • Rete : È un insieme di calcolatori

Cos’è una rete di calcolatori ? • Rete : È un insieme di calcolatori e dispositivi collegati fra loro in modo tale da permettere lo scambio di dati – es: la rete del vostro centro di calcolo, Internet • Ogni calcolatore o dispositivo viene detto nodo ed è identificato da un indirizzo univoco all’interno della rete – es: un PC, una stampante, etc. . . 6

A che serve una rete di calcolatori ? • Alcuni esempi di applicazioni che

A che serve una rete di calcolatori ? • Alcuni esempi di applicazioni che usano la rete : – posta elettronica (scambio di corrispondenza fra utenti di sistemi collegati in rete) – trasferimento di file (copia di file fra due computer collegati) – terminali virtuali (ci si può collegare e lavorare interattivamente con un computer remoto) – condivisione di risorse (stampanti, file system…) – World Wide Web (ipertesti distribuiti) 7

Come ci si collega alla rete ? RAM (memoria centrale) Processore bus Linee dati,

Come ci si collega alla rete ? RAM (memoria centrale) Processore bus Linee dati, indirizzi e controllo Interfaccia di I/O LAN Scheda ethernet Interfaccia di I/O Rete Telefonica modem 8

La connessione dei dispositivi di I/0 (periferiche) (3) Dati da/per la periferica Sottoprogramma per

La connessione dei dispositivi di I/0 (periferiche) (3) Dati da/per la periferica Sottoprogramma per realizzare l’operazione richiesta Unità di controllo Periferica porta Registro dati Registro stato Interfaccia I/O Operazione / esiti Bus dati Bus controllo Bus indirizzi 9

Come ci si collega alla rete (2) • Modem (modulatore / demodulatore) – permette

Come ci si collega alla rete (2) • Modem (modulatore / demodulatore) – permette di trasferire dati da un calcolatore all’altro usando la linea telefonica tradizionale – effettua la modulazione del segnale in uscita (dalla rappresentazione elettrica interna alle memorie a suoni analogici lungo il filo telefonico) – effettua la demodulazione (il passo di codifica inverso) all’arrivo – velocità tipica 56 K al secondo (in bit /sec) 10

Le reti di calcolatori • Sono classificate per estensione – reti locali LAN (Local

Le reti di calcolatori • Sono classificate per estensione – reti locali LAN (Local Area Network) consentono di collegare fra loro dispositivi nello stesso edificio o in edifici adiacenti es : le rete del vostro centro di calcolo – reti metropolitane MAN (Metropolitan AN) consentono il collegamento di dispositivi nella stessa area urbana es : la rete civica pisana, la rete privata dell’Università 11

Le reti di calcolatori (2) Estensione (segue) – reti geografiche WAN (Wide AN) collegano

Le reti di calcolatori (2) Estensione (segue) – reti geografiche WAN (Wide AN) collegano dispositivi diffusi su un’ampia area geografica es : in genere tutte le reti che devono attraversare suolo pubblico (due sedi distanti della stessa ditta) – reti di reti (internetworking) collegano fra loro più reti diverse (in termini sia di hardware che di software) mediante opportuni elementi di interfaccia es: Internet 12

Struttura delle reti di calcolatori • Ci sono reti di molti tipi che utilizzano

Struttura delle reti di calcolatori • Ci sono reti di molti tipi che utilizzano hardware e software diversi – es : cavo telefonico (modem), reti ethernet (scheda di rete), infrarossi (IR), onde radio • Perché la comunicazione possa avvenire correttamente ci deve essere un accordo sulle regole da seguire durante lo scambio (protocollo) • Si usa una gerarchia di protocolli – ogni protocollo disciplina un aspetto della comunicazione 13

Struttura delle reti di calcolatori (2) • L’insieme dei protocolli usati da una rete

Struttura delle reti di calcolatori (2) • L’insieme dei protocolli usati da una rete costituisce l’architettura della rete – esistono architetture standard ufficiali (es. ISO/OSI) – l’architettura di Internet costituisce uno standard di fatto (Internet Protocol Suite) – Non si possono collegare assieme direttamente due reti con architetture diverse (serve un nodo collegatore, il gateway) 14

L’Internet Protocol Suite • In cosa consiste l’Internet Protocol Suite Livello applicazione I P

L’Internet Protocol Suite • In cosa consiste l’Internet Protocol Suite Livello applicazione I P S Livello trasporto (TCP/UDP) Livello network (IP) Collegamento fisico E’ il protocollo hw/sw che si occupa di trasmettere correttamente un singolo gruppo di bit (frame) fra due nodi collegati fisicamente in una rete omogenea. 15

L’Internet Protocol Suite (2) Livello applicazione I P S Livello trasporto (TCP/UDP) Livello network

L’Internet Protocol Suite (2) Livello applicazione I P S Livello trasporto (TCP/UDP) Livello network (IP) Gestisce l’instradamento dei messaggi fra due nodi non collegati sulla stessa rete omogenea. È analogo a decidere che rotta fare seguire ad un treno merci in viaggio da Reggio Calabria a Milano… Collegamento fisico 16

L’Internet Protocol Suite (3) Livello applicazione I P S Livello trasporto (TCP/UDP) Livello network

L’Internet Protocol Suite (3) Livello applicazione I P S Livello trasporto (TCP/UDP) Livello network (IP) Collegamento fisico Controlla il trasferimento dei dati al nodo destinazione. Se il messaggio è troppo grosso lo spezza in più messaggi piccoli (pacchetti). TCP controlla anche ogni pacchetto sia stato trasmesso correttamente ed ricostruisce il messaggio a destinazione. UDP e TCP permettono a più utenti di usare la rete contemporaneamente 17

L’Internet Protocol Suite (4) Livello applicazione I P S Livello trasporto (TCP/UDP) Livello network

L’Internet Protocol Suite (4) Livello applicazione I P S Livello trasporto (TCP/UDP) Livello network (IP) Insieme di protocolli che definisce come interagiscono le applicazioni. I protocolli più comuni sono FTP (file transfer protocol) per il trasferimento file TELNET (connessione a terminale remoto) SNMP (per la posta elettronica) e HTTP (per il World Wide Web) Collegamento fisico 18

L’Internet Protocol Suite (5) • Internet Protocol (IP) gestisce 3 aspetti : – Fornisce

L’Internet Protocol Suite (5) • Internet Protocol (IP) gestisce 3 aspetti : – Fornisce uno schema di indirizzamento per tutti i computer collegati dalla rete di reti (indirizzo IP) – Decide il formato dei pacchetti che vengono trasmessi • le reti collegate hanno tecnologia diversa e quindi in generale formato e dimensione dei pacchetti diversa – Decide come instradare i vari pacchetti fino al nodo destinazione • la decisione viene presa in base ad una tabella di routing che spiega come comportarsi per i vari indirizzi 19

L’Internet Protocol Suite (5) • Internet Protocol (IP) : indirizzi IP – ogni computer

L’Internet Protocol Suite (5) • Internet Protocol (IP) : indirizzi IP – ogni computer connesso alla rete ha un indirizzo univoco (l’indirizzo IP, intero positivo a 32 bit) – es. 131. 114. 4. 97 è l’indirizzo IP della mia macchina 131 8 bit 114 8 bit 97 8 bit – la notazione con 4 numeri viene usata per leggibilità – IP V 6, nuovo protocollo che usa 128 bit (per evitare la saturazione) 20

L’Internet Protocol Suite (6) • Internet Protocol (IP) : IP address – gli indirizzi

L’Internet Protocol Suite (6) • Internet Protocol (IP) : IP address – gli indirizzi IP vengono assegnati a gruppi (un gruppo è detto dominio) da una autorità centralizzata con ramificazioni in tutto il mondo – ogni nodo ha un ‘nome simbolico’ • es. ely. di. unipi. it è il nome simbolico della mia macchina – un insieme di processi attivi su particolari nodi della rete si occupa di tradurre questi nomi simbolici nel corrispondente indirizzo IP numerico (DNS, Domain Name System) 21

Il World Wide Web (WWW) • Insieme di server distribuito sulla rete, che permette

Il World Wide Web (WWW) • Insieme di server distribuito sulla rete, che permette di accedere a file memorizzati in particolari directory su tutte le macchine collegate • Per richiedere informazioni ai server Web si usano solitamente dei programmi detti Web client (i normali navigatori) – i navigatori si preoccupano di interagire con i server seguendo opportuni protocolli • generalmente http (hypertext trabsfer protocol) ma anche ftp etc. 22

Il World Wide Web (2) • Vediamo cosa accade richiedendo l’accesso a una certa

Il World Wide Web (2) • Vediamo cosa accade richiedendo l’accesso a una certa pagina del web es: http: //www. di. unipi. it/susi/IG 02/text. htm – www. di. unipi. it è l’indirizzo IP formato simbolico del server web dove si trova l’informazione cercata – il navigatore traduce questa richiesta • cioè la trasforma in un messaggio al server con tutti i dettagli necessari e secondo le regole del protocollo specificato (http) • susi/IG 02/text. htm viene inviato al server per individuare il file cercato (text. htm) all’interno delle directory susi e IG 02 (il server sa come trovarle) 23

Il World Wide Web (3) • Vediamo cosa accade richiedendo l’accesso a una certa

Il World Wide Web (3) • Vediamo cosa accade richiedendo l’accesso a una certa pagina del web (cont. ) es: http: //www. di. unipi. it/susi/IG 02/text. htm – il server www. di. unipi. it risponde alla richiesta inviando il testo della pagina cercata (se la trova) e la descrizione del tipo MIME della pagina stessa – il navigatore visualizza il contenuto della pagina usando una opportuna applicazione in base al tipo MIME – tipico formato è HTML (Hypertext Markup Language) • HTML permette di incapsulare nel testo le informazioni relative alla sua formattazione e diversi oggetti di tipo multimediale (immagini, suoni, etc) 24

Il World Wide Web (4) • Vediamo cosa accade richiedendo l’accesso a una certa

Il World Wide Web (4) • Vediamo cosa accade richiedendo l’accesso a una certa pagina del web (cont. ) es: http: //www. di. unipi. it/susi/IG 02/text. htm – //www. di. unipi. it/susi/IG 02/text. htm è detto URL (Uniform Resource Locator) e permette di localizzare in maniera univoca tutti i file pubblicati sulla rete 25

I problemi risolubili dal computer Complessità Problemi intrattabili Problemi indecidibili 26

I problemi risolubili dal computer Complessità Problemi intrattabili Problemi indecidibili 26

La complessità degli algoritmi • Nella prima parte del corso – abbiamo visto alcuni

La complessità degli algoritmi • Nella prima parte del corso – abbiamo visto alcuni esempi di algoritmi – abbiamo visto come alcuni algoritmi sono ‘più veloci’ di altri • Adesso : – vogliamo approfondire introducendo misure ‘quantitative’ della velocità di un algoritmo (la complessità) • per confrontare due algoritmi fra di loro • per stabilire se un certo problema si può risolvere in tempo ragionevole o no 27

La complessità degli algoritmi (2) • Un esempio: ricerca di un Autore in schede

La complessità degli algoritmi (2) • Un esempio: ricerca di un Autore in schede ordinate: • algoritmo stupido : cerco tutte le schede dalla prima • algoritmo ‘lettera iniziale’ : troviamo la prima scheda relativa alla lettera iniziale del campo Autore e da quella procediamo in sequenza • algoritmo ‘del dizionario’ : dividiamo ripetutamente le schede a metà eliminando ogni volta la metà che sicuramente non contiene la scheda cercata – la valutazione di complessità associa ad ogni algoritmo una espressione numerica che descrive il numero di operazioni effettuate (in media) 28

La ricerca ‘stupida’ 1. Apri il classificatore 2. Prendi la prima scheda 3. Confronta

La ricerca ‘stupida’ 1. Apri il classificatore 2. Prendi la prima scheda 3. Confronta il campo autore e titolo con quelli cercati 4. Se sono uguali, allora la ricerca è terminata, altrimenti prendi la scheda successiva e vai al passo 3 5. Se le schede sono esaurite, allora il libro cercato non esiste. 29

La ricerca ‘stupida’ (2) Numero operazioni elementari richieste • Complessità 1 1. Apri il

La ricerca ‘stupida’ (2) Numero operazioni elementari richieste • Complessità 1 1. Apri il classificatore 1 (lettura) (confronto) 2. Prendi la prima scheda 3. Confronta il campo autore e titolo con quelli cercati 1 4. Se sono uguali, allora la ricerca è terminata, altrimenti prendi la scheda successiva e vai al passo 3 2 (lettura e confronto) 5. Se le schede sono esaurite, allora il libro cercato non esiste. 1 (confronto) 30

La ricerca ‘stupida’ (3) Numero operazioni elementari richieste • Complessità 1 1. Apri il

La ricerca ‘stupida’ (3) Numero operazioni elementari richieste • Complessità 1 1. Apri il classificatore 1 (lettura) (confronto) 2. Prendi la prima scheda 3. Confronta il campo autore e titolo con quelli cercati 1 4. Se sono uguali, allora la ricerca è terminata, altrimenti prendi la scheda successiva e vai al passo 3 2 (lettura e confronto) 5. Se le schede sono esaurite, allora il libro cercato non esiste. 1 (confronto) ? Quante volte sono ripetuti 3 -4 -5 ? 31

La ricerca stupida (4) schedario 1 N Situazione iniziale Numero complessivo delle schede 32

La ricerca stupida (4) schedario 1 N Situazione iniziale Numero complessivo delle schede 32

La ricerca stupida (5) schedario 1 2 ………. K N Situazione dopo aver esaminato

La ricerca stupida (5) schedario 1 2 ………. K N Situazione dopo aver esaminato K schede 33

La ricerca stupida (6) schedario 1 2 ………. K N Situazione dopo aver esaminato

La ricerca stupida (6) schedario 1 2 ………. K N Situazione dopo aver esaminato K schede I passi 3 -4 -5 vengono ripetuti finché non trovo la scheda. Supponendo che le schede vengano tutte cercate con la stessa frequenza ho : mediamente N/2 volte 34

La ricerca ‘stupida’ (7) Numero operazioni elementari richieste • Complessità totale 1 1. Apri

La ricerca ‘stupida’ (7) Numero operazioni elementari richieste • Complessità totale 1 1. Apri il classificatore 1 (lettura) (confronto) 2. Prendi la prima scheda 3. Confronta il campo autore e titolo con quelli cercati 1 4. Se sono uguali, allora la ricerca è terminata, altrimenti prendi la scheda successiva e vai al passo 3 2 (lettura e confronto) 5. Se le schede sono esaurite, allora il libro cercato non esiste. 1 (confronto) (Tl + Tc )*N/2 Tl - tempo di lettura Tc - tempo di confronto 35

La ricerca ‘stupida’ (8) • Costo complessivo : (Tl + Tc )*N/2 – facciamo

La ricerca ‘stupida’ (8) • Costo complessivo : (Tl + Tc )*N/2 – facciamo un conto numerico (Tl = 0. 01 ms, Tc = 10 ns, N= 400 000) (0. 01 )*200 000 = 2000 ms = 2 secondi 36

La ricerca stile ‘dizionario’ 1. Apri il classificatore 2. Prendi la scheda X al

La ricerca stile ‘dizionario’ 1. Apri il classificatore 2. Prendi la scheda X al centro dello schedario 3. Confronta il campo autore e titolo di X con quelli cercati 4. Se sono uguali, allora termina, altrimenti prosegui 5. Se il campo autore di X è minore di quello cercato allora prosegui la ricerca sulla metà inferiore delle schede altrimenti considera la metà superiore 6. Se la metà selezionata al passo 5 è vuota allora termina (lo schedario non contiene il libro cercato) altrimenti scegli come X la scheda al centro della metà scelta e vai al passo 3 37

La ricerca stile ‘dizionario’ (2) schedario Situazione iniziale 38

La ricerca stile ‘dizionario’ (2) schedario Situazione iniziale 38

La ricerca stile ‘dizionario’ (3) Ogni volta elimino la metà delle schede, oppure mi

La ricerca stile ‘dizionario’ (3) Ogni volta elimino la metà delle schede, oppure mi fermo perché ho trovato la scheda cercata Ogni volta divido il numero N delle schede per 2, mi fermo quando N è diventato 1 o 0 Al più eseguo x passi dove x è il logaritmo in base 2 di N (log 2 N) Scheda cercata! 39

La ricerca stile ‘dizionario’ (4) 1. Apri il classificatore 1 2. Prendi la scheda

La ricerca stile ‘dizionario’ (4) 1. Apri il classificatore 1 2. Prendi la scheda X al centro dello schedario 1 (confronto) 3. Confronta il campo autore e titolo di X con quelli 1 cercati (lettura e confronto) 4. Se sono uguali, allora termina, altrimenti prosegui 1 5. Se il campo autore di X è minore di quello cercato allora prosegui la ricerca sulla metà inferiore delle 1 schede altrimenti considera la metà superiore (confronto) 6. Se la metà selezionata al passo 5 è vuota allora termina (lo schedario non contiene il libro cercato) altrimenti scegli come X la scheda al centro della metà scelta e vai al passo 3 1 40

La ricerca stile ‘dizionario’ (5) I passi 3 -6 sono effettuati log 2 N

La ricerca stile ‘dizionario’ (5) I passi 3 -6 sono effettuati log 2 N volte. Quindi la complessità in questo caso è : (Tl + Tc) * log 2 N che valutato con (Tl = 0. 01 ms, Tc = 10 ns, N= 400 000) da (0. 010001) * log 2 400 000 = (0. 010001) * 19 = 0. 19 ms = 0. 0019 sec 41

Complessità : considerazioni • È importante stabilire la complessità (velocità) di un algoritmo per

Complessità : considerazioni • È importante stabilire la complessità (velocità) di un algoritmo per capire se un problema è o meno risolubile in tempi ragionevoli dal calcolatore • Esistono problemi per cui non esiste un algoritmo di risoluzione che termina in tempi ragionevoli ! 42

Complessità : considerazioni (2) • Problemi indecidibili : quelli per i quali non può

Complessità : considerazioni (2) • Problemi indecidibili : quelli per i quali non può esistere un algoritmo di soluzione che termina sempre (in tempo finito) per qualsiasi insieme dei dati in ingresso – es : problema del barbiere che fa la barba solo a tutti coloro che non se la fanno da soli (paradosso di Russel) : • esiste un algoritmo che dato X umano risponde SI se X si fa la barba da solo e NO altrimenti? 43

Complessità : considerazioni (3) • Il barbiere che fa la barba solo a tutti

Complessità : considerazioni (3) • Il barbiere che fa la barba solo a tutti coloro che non se la fanno da soli (cont. ) – la risposta è NO, perché un tale algoritmo A porterebbe ad una contraddizione se applico A al barbiere stesso (X = barbiere) • infatti se A(barbiere) risponde SI significa che il barbiere si rade da solo … 44

Complessità : considerazioni (3 a) • Il barbiere che fa la barba a tutti

Complessità : considerazioni (3 a) • Il barbiere che fa la barba a tutti coloro che non se la fanno da soli (cont. ) – la risposta è NO, perché un tale algoritmo A porterebbe ad una contraddizione se applico A al barbiere stesso (X = barbiere) • infatti se A(barbiere) risponde SI significa che il barbiere si rade da solo …contro la sua caratteristica di radere solo chi non si rade da solo • analogamente per la risposta NO 45

Complessità : considerazioni (4) • Altro esempio : trovare un algoritmo che decide se

Complessità : considerazioni (4) • Altro esempio : trovare un algoritmo che decide se un programma P termina dato un certo insieme dei dati in ingresso D (problema di Turing o della terminazione) – primo tentativo: applicare P a D ed aspettare il risultato … – …. E se P(D) non termina ? – Turing ha dimostrato che l’esistenza di un simile algoritmo provocherebbe un paradosso 46

Complessità : considerazioni (5) • Quindi esistono problemi intrinsecamente insolubili (problemi indecidibili) – per

Complessità : considerazioni (5) • Quindi esistono problemi intrinsecamente insolubili (problemi indecidibili) – per fortuna sono pochi • Esistono però anche problemi risolubili ma solo con algoritmi di complessità molto elevata (problemi intrattabili) – che sono purtroppo molto frequenti … 47

Complessità : considerazioni (5) • Problemi intrattabili – Sono problemi che richiedono di esplorare

Complessità : considerazioni (5) • Problemi intrattabili – Sono problemi che richiedono di esplorare tutte le possibili combinazioni di un insieme di dati in ingresso – La loro complessità ha fattori come 2 N (N numero dei dato in ingresso) – Con fattori esponenziali nella formula di complessità i tempi di risposta dell’algoritmo crescono rapidamente con il numero N dei dati in ingresso (es. anni) • nel nostro esempio (ricerca) con N=40, avremo 10995116 sec cioè circa 127 giorni (4 mesi e mezzo) 48

Complessità : considerazioni (6) • Problema dei ponti di Königsberg (Eulero) A a f

Complessità : considerazioni (6) • Problema dei ponti di Königsberg (Eulero) A a f b Fiume Pregel B e D Isola Kneiphof ponti c d g C problema : stabilire se esiste un itinerario attraverso la città che traversi ciascun ponte una sola volta 49

Complessità : considerazioni (7) • Problemi dei ponti di Königsberg (Eulero) arco A nodo

Complessità : considerazioni (7) • Problemi dei ponti di Königsberg (Eulero) arco A nodo a b f B e D d c g C grafo di Königsberg : un nodo per ogni pezzo di terra e un arco per ogni ponte 50

Complessità : considerazioni (8) • Problemi dei ponti di Königsberg (Eulero) A a b

Complessità : considerazioni (8) • Problemi dei ponti di Königsberg (Eulero) A a b f B e D d c g C grafo di Königsberg : un nodo per ogni pezzo di terra e un arco per ogni ponte 51

Complessità : considerazioni (9) • Problemi dei ponti di Königsberg (Eulero) – nel grafo

Complessità : considerazioni (9) • Problemi dei ponti di Königsberg (Eulero) – nel grafo di Königsberg non esiste un itinerario con le caratteristiche cercate – Eulero risolse il problema per un grafo qualsiasi mostrando che condizione necessaria e sufficiente è la presenza di nodi da cui si dipartono solo numeri pari di archi – Quindi il problema si risolve esaminando una sola volta tutti i nodi 52

Complessità : considerazioni (10) • Problema del commesso viaggiatore A a b f B

Complessità : considerazioni (10) • Problema del commesso viaggiatore A a b f B e D d c g C trovare una cammino che tocchi tutti i nodi una e una sola volta (nodi = città, archi = collegamenti) 53

Complessità : considerazioni (11) • Problema del commesso viaggiatore A a b f B

Complessità : considerazioni (11) • Problema del commesso viaggiatore A a b f B e D d c g C una soluzione per il grafo di Königsberg 54

Complessità : considerazioni (12) • Simile al problema dei ponti • Però il TSP

Complessità : considerazioni (12) • Simile al problema dei ponti • Però il TSP è intrattabile (NP-completo): per grafi generali TSP non può essere risolto senza considerare tutte le possibili combinazioni di cammini • Morale : – parecchi problemi pratici sono intrattabili – spesso problemi simili hanno caratteristiche computazionali diverse C – per problemi intrattabili bisogna abbandonare l’idea di algoritmo esatto per passare agli algoritmi approssimati 55