Algoritmi e Strutture Dati

Похожие документы
Algoritmi e Strutture Dati

Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati

Teoria della computazione

Dispensa di Informatica II.1

Concetti Introduttivi. Il Computer

Problemi decidibili, semidecidibili, indecidibili

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Algoritmi e Strutture dati a.a. 2013/2014

Introduzione alla programmazione

Le parole dell informatica: algoritmo e decidibilità

Introduzione al Calcolo Scientifico

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Algoritmi e Strutture dati a.a. 2012/2013

Strutture dati e loro organizzazione. Gabriella Trucco

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Introduzione alla programmazione strutturata

ELEMENTI DI INFORMATICA L. Ing. Claudia Chiusoli

Introduzione agli Algoritmi

Concetti di base di informatica

Algoritmo: procedimento non ambiguo che in un numero finito di passi risolve un problema (o una classe di problemi)

Le aree dell informatica

Studio degli algoritmi

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

MODULO 07. La soluzione dei problemi mediante gli algoritmi

Struttura del calcolatore

Il calcolatore universale, origini e nuovi paradigmi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Teoria dell Informazione

Appunti di informatica. Lezione 5 anno accademico Mario Verdicchio

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Problemi, algoritmi, calcolatore

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Appunti di informatica. Lezione 7 anno accademico Mario Verdicchio

Il linguaggio dei computer: rappresentazione in binario e algoritmi di conversione 20 settembre 2017

Транскрипт:

Introduzione al Corso Maria Rita Di Berardini (Camerino), Emanuela Merelli (Ascoli) 1 1 Scuola di Scienze e Tecnologie - Sezione di Informatica Università di Camerino

Parte I Il concetto di Algoritmo

Il concetto di algoritmo Informalmente, un algoritmo è una procedura computazionale ben definita eseguita per risolvere un dato problema computazionale È una sequenza di passi computazionali che prende dei valori come input e produce altri valori come output Più precisamente, un algoritmo è un procedimento di calcolo esplicito, descrivibile con un numero finito di regole che conduce al risultato dopo un numero finito di operazioni, cioè di applicazioni delle regole

Un esempio Il concetto di Algoritmo Definizione del problema: ricerca del minimo in un array: min(a[1... n]) = a sse a A[i] per ogni i = 1,..., n (stabilisce una relazione tra input e output) Algoritmo (descrive una procedura computazionale per realizzare tale relazione): min(a) a A[1] for i 2 to length[a] do if A[i] < a a A[i] return a min(a) //se A è ordinato return A[1]

Un pò di storia Il concetto di Algoritmo Etimologia: Il termine algoritmo significa procedimento di calcolo Deriva dal termine latino medievale algorismus, che a sua volta deriva dal nome del matematico usbeco Abu Jafar Mohammad ibn-musa al-khowarismi, vissuto nel IX (?) secolo Algoritmi nella storia Algoritmi di tipo numerico sono stati studiati da babilonesi e indiani Algoritmi in uso ancora oggi sono stati studiati da matematici greci 2000 anni fa (Algoritmo di Euclide per il MCD, algoritmi geometrici,... )

Un pò di storia. Dal 1930 La teoria degli algoritmi ha iniziato a stabilizzarsi agli inizi del XX secolo, mentre... 1928-1930 - David Hilbert - matematico tedesco, formalizza il concetto di algoritmo per definire il problema della decisione : si può dimostrare che l insieme degli assiomi dell aritmetica è consistente? 1930 - Kurt Gödel, risponde NO. Il Teorema di incompletezza di Gödel stabilisce infatti che ogni sistema formale può provare la propria consistenza se e solo se il sistema stesso inconsistente. Il primo teorema di incompletezza di Gödel dimostra che qualsiasi sistema che permette di definire i numeri naturali necessariamente incompleto: esso contiene affermazioni di cui non si pu dimostrare n la verit n la falsità.

Teorema di Kurt Gödel - 1930 Il teorema di Kurt Gödel, ha un altra interpretazione esprimibile nel contesto informatico. Nella logica del primo ordine l insieme di tutti i teoremi di una teoria è un insieme ricorsivamente enumerabile: ciò significa che è possibile scrivere un algoritmo che possa generare, prima o poi, ogni dimostrazione valida. È possibile scrivere un programma per computer in grado di determinare con certezza se una certa affermazione vera o falsa? Il teorema di Gödel dice che ciò, in generale, non possibile.

Macchina di Turing - 1936 Uno dei più celebri modelli matematici che definiscono il concetto di algoritmo è la macchina di Turing. Essa rappresenta una sorta di computer ideale corredato di un programma da eseguire.

Perchè parliamo di algoritmi Le tecniche di progettazione di algoritmi e di analisi di correttezza e di efficienza si sono evolute nella seconda metà del XX secolo grazie alla diffusione dei calcolatori elettronici Ovunque si impieghi un calcolatore occorrono algoritmi corretti e efficienti che ne utilizzino al massimo le possibilità. Esempi di algoritmi efficienti: controllo dei voli aerei regolazione reattori nucleari reperimento d informazioni da archivi smistamento di comunicazioni telefoniche gioco degli scacchi controllo della produzione di una catena di montaggio

Come valutiamo gli algoritmi Risolve correttamente il problema? un algoritmo si dice corretto se, per ogni istanza di input, si ferma con l output corretto un algoritmo corretto risolve il problema computazionale dato dimostrazione matematica, descrizione informale Risolve il problema in maniera efficiente (analisi di algoritmi)? definizione di efficienza (tempo o memoria) alcuni problemi non possono essere risolti in maniera efficiente esistono delle soluzioni ottime: non è possibile fare di meglio

Algoritmi e Programmi Gli algoritmi vengono descritti tramite programmi, che si avvalgono di istruzioni e costrutti dei linguaggi di programmazione per essere eseguiti da calcolatori elettronici I programmi sono formulazioni concrete di algoritmi astratti che si basano su particolari rappresentazioni dei dati, e utilizzano operazioni di manipolazione dei dati, messe a disposizione da uno specifico linguaggio di programmazione Le proprietà degli algoritmi sono talmente fondamentali, generali e robuste, da essere indipendenti dalle caratteristiche di specifici linguaggi di programmazione o di particolari calcolatori elettronici

Strutture Dati Il concetto di Algoritmo Il concetto di algoritmo è inscindibile da quello di dato: per risolvere un problema computazionale, occorre organizzare ed elaborare dati Un algoritmo può essere visto come un manipolatore di dati: a fronte di dati in ingresso che descrivono il problema producono dati in uscita come risultato del problema È fondamentale che i dati siano ben organizzati e strutturati in modo che il calcolatore li possa elaborare efficientemente

Clever e Efficient Obiettivo: Studiare i modi più appropriati di organizzare i dati di un problema al fine di realizzare un algoritmo efficiente Domanda: Che cosa intendiamo per appropriato clever? Che cosa intendiamo per efficiente efficient?

Clever e Efficient Data Structure Algorithms Liste, pile, code Heaps Alberi binari di ricerca B-trees Tabelle Hash Insert Delete Find Merge Shortest path Grafi