Utilizzare un pianificatore SHOP. Specificare le conoscenze. Definizione del dominio. Rappresentazione della conoscenza nel pianificatore

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Utilizzare un pianificatore SHOP. Specificare le conoscenze. Definizione del dominio. Rappresentazione della conoscenza nel pianificatore"

Transcript

1 Utilizzare un pianificatore SHOP Istruzioni per l utilizzo Specificare le conoscenze che il pianificatore dovrà utilizzare Chiamare il pianificatore su un problema specifico Specificare le conoscenze Rappresentazione della conoscenza nel pianificatore Lo stato iniziale (stato) STATO AZIONI GOAL Formato di rappresentazione per l utente Il risultato che si vuole ottenere (goal) Gli operatori che possono essere applicati per ottenere il risultato (dominio) stato azioni goal PROGRAMMA risultato RISULTATO Formato interno (java, lisp, C, ecc.) Formato di rappresentazione per l utente JSHOP2 Compilazione di un problema 1. Creazione di classi java per 1. dominio 2. problema 2. Compilazione 3. Interpretazione Definizione del dominio Operatori: azioni primitive (direttamente eseguibili) Metodi: azioni astratte (non direttamente eseguibili) che si scompongono in una sequenza Assiomi: regole di ragionamento in un dominio 1

2 Stato del mondo In SHOP uno stato del mondo è una congiunzione di predicati (= formule logiche del primordine che hanno un valore vero o falso) che sono veri in quello stato più_alto (Luigi, Carlo) sta per è vero che Luigi è più alto di Carlo Attenzione, SHOP non incorpora un TMS: i predicati possono essere contraddittori! Operatori di pianificazione Gli operatori di pianificazione (azioni e azioni astratte) si applicano a un insieme di parametri andare_da_a(agente,da,a) Gli operatori SHOP hanno precondizioni e effetti I metodi SHOP hanno solo precondizioni Precondizioni e effetti sono espressi come insieme di predicati Binding più_alto(x,y) non significa molto senza interpretazione più_alto(carlo, Giuseppe) è vero più_alto(mario, Luigi) è falso Lo stesso vale per gli operatori di SHOP: essi sono definiti su variabili che devono essere legate a individui (binding) perché se ne possa valutare l applicabilità Binding Operatore: apri(x, y) prec: davanti(x, y) effetto: aperta(y) Stato del mondo: davanti(carlo, porta_casa) Se vale il binding Carlo = x porta_casa = y davanti (Carlo, porta_casa) Allora l operatore è applicabile apri(carlo, porta_casa) Binding negli operatori complessi (metodi) Op: entra(x, y, z) prec: ha_porta(z, y) davanti(x, y) scomposizione: apri(x,y) attraversa(x,y) Stato del mondo: davanti(carlo, porta_casa) ha(atrio, porta_casa) Se vale lo stesso binding di prima (più atrio = z), Allora sono applicabili gli operatori entra(carlo, porta_casa, atrio) apri (Carlo,porta_casa), attraversa(carlo, porta_casa) Semantica delle azioni Operatore: apri(x, y) prec: davanti(x, y) effetto: aperta(y) Stato del mondo: davanti(carlo, porta_casa) davanti(gatto, porta_casa) In mancanza di ulteriori informazioni è possibile anche il binding apri(gatto,porta_casa) 2

3 Tipi Se si vuole specificare per il pianificatore che solo un essere umano può aprire la porta, occorre introdurre un predicato ad hoc nelle precondizioni apri(x, y) prec: davanti(x, y) umano(x) = tipo di x deve essere umano porta(y) effetto: aperta(y) Anche lo stato del mondo dovrà essere adattato di conseguenza umano(carlo) Metodi I metodi sono la chiave della struttura gerarchica Un metodo può astrarre una sequenza di operatori, oppure di altri metodi Un metodo può avere più di una definizione alternativa esempio Fai acquisti Vai al negozio Scegli prodotti Paga Come funziona INPUT: sequenza di metodi Sostituisce ogni metodo con la sua scomposizione Se ci sono alternative, le prova in parallelo Vai in auto Vai a piedi carta contanti FINE: tutti i metodi iniziali sono stati sostituiti da operatori Task e obiettivi In SHOP il risultato che si vuole ottenere non viene specificato come stato Si specifica direttamente il risultato riferendosi all esecuzione avvenuta di un task Non eseguita_spesa(agente) ma esegui_spesa(agente) Implicitamente fatto(esegui_spesa(agente)) Task e sottotask Il pianificatore viene chiamato normalmente sull operatore di più alto livello Tuttavia, è possibile chiamare il pianificatore su qualsiasi metodo, anche a livelli inferiori di astrazione, o su qualsiasi operatore Equivale a indicare come risultato voluto lo stato in cui quel metodo o operatore è stato eseguito con successo 3

4 Algoritmo SHOP Dati: Dominio (D) Operatori, metodi, assiomi Stato inziale Task Il task viene progressivamente raffinato Il task viene sostituito dai suoi sotto-task Il piano inizialmente è vuoto Man mano che la scomposizione del task raggiunge gli operatori, essi vengono aggiunti al piano Operazioni fondamentali Ci sono modi fondamentali nell algoritmo SHOP per avanzare nella soluzione a) Il task corrisponde semplicemente a un operatore b) Riduzione: il task corrisponde a una sequenza di operatori o metodi Cosa fa il pianificatore? S (stato) T (task) D (dominio) P (piano) Ogni volta che l algoritmo esamina un operatore per la riduzione, verifica se il piano ottenuto fin a allora sarebbe applicabile a partire dallo stato iniziale con il nuovo passo aggiunto Se siamo in una riduzione, allora questa operazione deve essere ripetuta per tutti i passi della scomposizione T vuoto? a = primo task T = task restanti a primitivo? Scomponi a in R = {r,, r} per ogni R T = {r,, r} + T return P fallimento operatore p per a? P = P + p procedure find-plan(s,t,d) return seek-plan(s,t,d,nil) end find-plan procedure seek-plan(s,t,d,p) if T=nil then return the list (p) t = the first task in T; R=the remaining tasks if t is primitive then if there is a simple plan q for t then return seek-plan(q(s),r,d, append(p,q)) else return FAIL else for every simple reduction r for t in S ans = seek-plan(s,append(r,r),d,p) if ans FAIL then return ans end for return FAIL end if end seek-plan Valutare applicabilità di un piano Valutare se un piano è applicabile significa verificare che ogni passo sia eseguibile data la sua posizione nella sequenza che porti al risultato specificato L unico modo per farlo è simulare l esecuzione del piano dallo stato iniziale: Eseguo il passo P 1, calcolo lo stato ottenuto S 1, eseguo il passo P 2 nello stato S 1, ottenendo lo stato S 2, ecc. 4

5 Fallimento della pianificazione Nella pianificazione molti piani parziali vengono scartati Un operatore è applicabile, ma la scelta di quell operatore vincola il pianificatore alla scelta di un operatori che non sono applicabili Un metodo è applicabile, ma nel corso della scomposizione ci si rende conto che non esiste una scomposizione applicabili Collegamenti causali I collegamenti causali si riferiscono alla relazione tra due azioni, di cui la prima rende possibile l esecuzione della seconda Preleva_denaro(x) Fai_spesa(x) esempio Fai acquisti Vai al negozio Scegli prodotti Paga Vai in auto Vai a piedi carta contanti Esempio di trace con piani abbandonati Definizione del problema (defproblem problem nome-dominio ((stato inziale: fatto 1 ) (stato inziale: fatto n )) (achieve-goals (goal 1 ) (goal n )))) Formato operatori (:operator (!nome?par1?parn) (lista precondizioni) (delete-list) (add-list) ) Formato metodi (:method (nome?par1?parn) [nome tail1] (precondizione1) (task-list1) [nome tailn] (precondizionen) (task-listn)) 5

6 esempio: il mondo dei blocchi esempio Achieve-goals C Assert-goals Find-nomove Add-new-goals Find-movable Move-blocks B Move-blocks 1 Move-blocks (2) Move-blocks (3) A B C A Sposta blocchi Move-blocks Sposta blocchi sul tavolo Move-blocks Rimuovi intralci Move-blocks stato iniziale: (block b01) (block b02) (block b03) (on-table b01) (clear b01) (on-table b02) (clear b02) (on-table b03) (clear b03) Codifica del problema achieve-goals: (on-table b01) (on b02 b01) (on b03 b02) (clear b03) (!!assert (goal (on-table b01))) assert-goals (!!assert (goal (on b02 b01))) (!!assert (goal (on b03 b02))) (!!assert (goal (clear b03))) (!!assert (dont-move b01)) find-nomove (!!assert (stack-on-block b02 b01)) find-movable (!pickup b02) move-block 1 (!stack b02 b01) (!!assert (dont-move b02)) (!!remove (stack-on-block b02 b01)) (!!assert (stack-on-block b03 b02)) check (!pickup b03) move-block 1 (!stack b03 b02) (!!assert (dont-move b03)) (!!remove (stack-on-block b03 b02)) Esempio operatore (:operator (!navigate?x?y?z) ((rover?x)(waypoint?y)(waypoint?z) (can_traverse?x?y?z)(available?x)(at?x?y) (visible?y?z)) ((at?x?y)) ((at?x?z))) Metodi: esempio (:method (navigate?rover?from?to) Case1 ;; il rover è già a destinazione ((at?rover?to)) () Case2 ;; il rover può andare direttamente da dove ;; si trova alla sua destinazione ((can_traverse?rover?from?to)) ((!navigate?rover?from?to)) Case3 ;; il rover deve passare da un punto intermedio ((waypoint?mid)(can_traverse?rover?from?mid) (not (visited?mid))) ((!navigate?rover?from?mid) (!visit?mid) (navigate?rover?mid?to) (!unvisit?mid))) 6

7 Metodi: navigate Definire / chiamare un operatore ((at?rover?to)) () navigate?rover?from?to ((can_traverse?rover?from?to)) ((!navigate?rover?from?to)) La definizione di un metodo può essere ricorsiva! ((waypoint?mid) (can_traverse?rover?from?mid) (not (visited?mid))) ((!navigate?rover?from?mid) (navigate?rover?mid?to)) apri(x,y) agente(x) porta(y) entra(x,y) agente(x) stanza(y) apri(x,z) attraversa(x,z) porta_di(z,y) attraversa(x,y) agente(x) porta(y) DEFINIZIONE DEGLI OPERATORI CHIAMATA DEGLI OPERATORI y (la porta nella definizione di apri e attraversa) qui diventa z, dato che y qui sta per la stanza. porta_di(z,y) specifica la relazione tra la porta e la stanza nella definizione di entra (= la porta che si apre e si attraversa è quella della stanza in cui si entra) 7

Come utilizzare il pianificatore SHOP

Come utilizzare il pianificatore SHOP Come utilizzare il pianificatore SHOP http://www.cs.umd.edu/projects/shop/ 1. Utilizzare un pianificatore Utilizzare un pianificatore significa principalmente Installare il pianificatore Specificare le

Dettagli

PIANIFICAZIONE BASATA SU GRAFI

PIANIFICAZIONE BASATA SU GRAFI PIANIFICAZIONE BASATA SU GRAFI Nel 1995 viene proposto da Blum e Furst CMU un nuovo pianificatore GRAPHPLAN basato sui grafi Durante la pianificazione viene creato un particolare grafo detto Planning Graph

Dettagli

GRAPH PLAN GRAPH PLAN

GRAPH PLAN GRAPH PLAN GRAPH PLAN Nel 1995 viene proposto da Blum e Furst CMU un nuovo pianificatore basato sui grafi e in particolare su una struttura dati: il Planning Graph A ogni passo dell albero di ricerca viene estesa

Dettagli

In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.

In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione Fondamenti di Programmazione Capitolo 4 Condizionale e ricorsione Prof. Mauro Gaspari: gaspari@cs.unibo.it Alcuni operatori utili L'operatore modulo opera su numeri interi e in generale su espressioni

Dettagli

Fondamenti di Informatica T. Linguaggio C: Stack e Ricorsione

Fondamenti di Informatica T. Linguaggio C: Stack e Ricorsione Linguaggio C: Stack e Ricorsione FUNZIONI: IL MODELLO A RUN-TIME Ogni volta che viene invocata una funzione: si crea di una nuova attivazione (istanza) del servitore viene allocata la memoria per i parametri

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

GRAPH PLAN. A ogni passo dell albero di ricerca viene estesa questa struttura dati. Inserisce il fattore TEMPO nella costruzione del piano.

GRAPH PLAN. A ogni passo dell albero di ricerca viene estesa questa struttura dati. Inserisce il fattore TEMPO nella costruzione del piano. GRAPH PLAN Nel 1995 viene proposto da Blum e Furst CMU un nuovo pianificatore basato sui grafi e in particolare su una struttura dati: il Planning Graph A ogni passo dell albero di ricerca viene estesa

Dettagli

Generazione di Piani attraverso Grafi di Pianificazione

Generazione di Piani attraverso Grafi di Pianificazione Università degli Studi di Brescia Facoltà di ingegneria Dipartimento di Elettronica per l Automazione Generazione di Piani attraverso Grafi di Pianificazione Corso di Intelligenza Artificiale Alfonso E.

Dettagli

Esempio: il fattoriale di un numero fact(n) = n! n!: Z! N n! vale 1 se n " 0 n! vale n*(n-1)! se n > 0. Codifica:

Esempio: il fattoriale di un numero fact(n) = n! n!: Z! N n! vale 1 se n  0 n! vale n*(n-1)! se n > 0. Codifica: ! Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa!! La ricorsione consiste nella possibilità di definire una funzione in termini di se

Dettagli

Operativamente, risolvere un problema con un approccio ricorsivo comporta

Operativamente, risolvere un problema con un approccio ricorsivo comporta ! Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa!! La ricorsione consiste nella possibilità di definire una funzione in termini di se

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi FASE 1: Dare un nome al problema partendo dall analisi del problema FASE 2: Scrivere la specifica funzionale FASE 3: Scrittura dell algoritmo FASE 3.1: Introduzione delle variabili

Dettagli

L ELABORATORE ELETTRONICO!

L ELABORATORE ELETTRONICO! L ELABORATORE ELETTRONICO! Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti

Dettagli

LA RICORSIONE LA RICORSIONE

LA RICORSIONE LA RICORSIONE LA RICORSIONE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini

Dettagli

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) 1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano

Dettagli

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi 1 Università degli studi di Parma Dipartimento di Ingegneria dell Informazione Informatica a.a. 2012/13 Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni La formalizzazione

Dettagli

Linguaggi di programmazione. Paradigmi di programmazione

Linguaggi di programmazione. Paradigmi di programmazione Linguaggi di programmazione Paradigmi di programmazione Linguaggi: un po di storia Albori: Macchine a programma memorizzato, Programmi come dati Linguaggio Macchina Assemblatore FORTRAN (calcolo scientifico)

Dettagli

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output F = { (s, s ) } per ogni s esiste una e una sola coppia (s, s ). Esempio: un algoritmo che calcola il quadrato di

Dettagli

L ELABORATORE ELETTRONICO

L ELABORATORE ELETTRONICO L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti

Dettagli

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori Programma del corso o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori o Elementi di Programmazione Algoritmi e programmi o Algoritmo

Dettagli

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):

Dettagli

Informatica 3. LEZIONE 9: Introduzione ai linguaggi funzionali. Modulo 1: Introduzione ai linguaggi funzionali Modulo 2: LISP

Informatica 3. LEZIONE 9: Introduzione ai linguaggi funzionali. Modulo 1: Introduzione ai linguaggi funzionali Modulo 2: LISP Informatica 3 LEZIONE 9: Introduzione ai linguaggi funzionali Modulo 1: Introduzione ai linguaggi funzionali Modulo 2: LISP Informatica 3 Lezione 9 - Modulo 1 Introduzione ai linguaggi funzionali Linguaggi

Dettagli

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Linguaggio Testuale E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Delle volte viene chiamato metalinguaggio, e l algoritmo scritto tramite

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Architetture dei Sistemi Elettronici

Architetture dei Sistemi Elettronici Architetture dei Sistemi Elettronici Roberto Roncella 12. Reti sequenziali algoritmiche Reti sequenziali algoritmiche Verso il microprocessore (8.1-8.2) Parte operativa e parte di controllo Descrizione

Dettagli

Costrutti di Programmazione Strutturata. Informatica 1 / 22

Costrutti di Programmazione Strutturata. Informatica 1 / 22 Costrutti di Programmazione Strutturata Informatica 1 / 22 Costrutti di Base Ricordi? Un algoritmo è detto strutturato se usa solo Sequenze di istruzioni Selezioni (se predicato allora fai istruzioni altrimenti

Dettagli

Informatica e Bioinformatica: Algoritmi

Informatica e Bioinformatica: Algoritmi Informatica e Bioinformatica: Algoritmi 20 Marzo 2014 Programmi Applicativi Programmi Applicativi Sistema Operativo (lezione 3) Macchina Hardware (lezione 1 e 2) La macchina hardware permette l esecuzione

Dettagli

ANALISI SINTATTICA LUCIDI DI F. D'AMORE E A. MARCHETTI SPACCAMELA

ANALISI SINTATTICA LUCIDI DI F. D'AMORE E A. MARCHETTI SPACCAMELA ANALISI SINTATTICA LUCIDI DI F. D'AMORE E A. MARCHETTI SPACCAMELA AUTOMI PUSHDOWN input u t w $ v x y z $ pila tabella controllo 2 ARGOMENTI Il compito dell'analisi sintattica Generazione automatica Trattamento

Dettagli

Elaboratore Elettronico

Elaboratore Elettronico L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati)) per produrre rre altri oggetti

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica (La Ricorsione e Debugging) Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2017/18 OUTLINE La ricorsione - Principi base Caso Studio

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano Cagnoni Il problema

Dettagli

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi Istruzioni variabili e tipi Sottoprogrammi Strutture di controllo Ricorsione 1 2 Obiettivo Ciclo di sviluppo di programmi Risoluzione

Dettagli

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Dettagli

Valori Alfanumerici. Informatica di Base -- R.Gaeta 1

Valori Alfanumerici. Informatica di Base -- R.Gaeta 1 Valori Alfanumerici Finora abbiamo utilizzato solo valori numerici; Se vogliamo usare valori alfanumerici (caratteri e numeri), usiamo le stringhe; In Logo le stringhe si delimitano con le parentesi quadre;

Dettagli

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica Programmazione Dipartimento di Matematica Ing. Cristiano Gregnanin Corso di laurea in Matematica 29 febbraio 2016 1 / 33 INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, bisogna conoscere

Dettagli

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

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi. Algoritmi Un tema centrale dell informatica è lo studio degli algoritmi. Ora nostro obiettivo sarà quello di esplorare a sufficienza questa materia fondamentale per poter capire e apprezzare appieno l

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione Laurea in Bioinformatica Docente: Carlo Drioli Web: www.scienze.univr.it/fol/main?ent=oi&id=39990 Programmazione: Dati Strutture di controllo Algoritmi Materiale tratto dai

Dettagli

Sistemi a Regole. Fabio Sartori 3 dicembre L algoritmo RETE Forward e Backward Chaining

Sistemi a Regole. Fabio Sartori 3 dicembre L algoritmo RETE Forward e Backward Chaining Sistemi a Regole Fabio Sartori sartori@disco.unimib.it 3 dicembre 2008 L algoritmo RETE Forward e Backward Chaining 1 Sistemi di Produzioni (1) Un sistema di produzioni consiste in un insieme non ordinato

Dettagli

La formalizzazione dell informazione: Dati e Diagrammi di Flusso

La formalizzazione dell informazione: Dati e Diagrammi di Flusso La formalizzazione dell informazione: Dati e Diagrammi di Flusso Codifica degli algoritmi Algoritmo formulato per essere comunicato tra esseri umani chiaro, sintetico e intuitivo codificato in linguaggi

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario

Dettagli

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale

Dettagli

Istruzioni di selezione in Java 1

Istruzioni di selezione in Java 1 Ordine di esecuzione Istruzioni di selezione in Java Corso di laurea in Comunicazione digitale Nei metodi l ordine di esecuzione delle istruzioni è sequenziale se non specificato altrimenti Alcune istruzioni

Dettagli

Capitolo 3 L elaborazione e la strutturazione dell informazione

Capitolo 3 L elaborazione e la strutturazione dell informazione Capitolo 3 L elaborazione e la strutturazione dell informazione Problemi e algoritmi Definire il problema Eliminare le ambiguità nella formulazione del problema Individuare il risultato che si vuole ottenere,

Dettagli

Problemi decidibili, semidecidibili, indecidibili

Problemi decidibili, semidecidibili, indecidibili Problemi decidibili, semidecidibili, indecidibili (Paragrafo 3.5 delle dispense) Il problema di determinare se una formula A della logica proposizionale sia valida o no può essere risolto mediante un procedimento

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Verifica parte IIB. Grafo di controllo. Criteri di selezione per test strutturali (white box) Test. Rif. Ghezzi et al

Verifica parte IIB. Grafo di controllo. Criteri di selezione per test strutturali (white box) Test. Rif. Ghezzi et al Verifica parte IIB Rif. Ghezzi et al. 6.3.4.1 Test In piccolo White box Black box Condizioni di confine Problema dell' Oracolo In grande Test di modulo Test di integrazione Test di Sistema Test di Accettazione

Dettagli

Risoluzione di un problema

Risoluzione di un problema Algoritmi Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2 Algoritmo Sequenza finita di mosse che risolve in un tempo finito

Dettagli

Linguaggi di alto livello, compilatori e interpreti

Linguaggi di alto livello, compilatori e interpreti Linguaggi di alto livello, compilatori e interpreti Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Limiti del linguaggio assembler Esempio: gestione

Dettagli

Istruzioni, algoritmi, linguaggi

Istruzioni, algoritmi, linguaggi Istruzioni, algoritmi, linguaggi 1 Algoritmo per il calcolo delle radici reali di un equazione di 2 o grado Data l equazione ax 2 +bx+c=0, quali sono i valori di x per cui l equazione è soddisfatta? 2

Dettagli

Verifica parte IIB. Rif. Ghezzi et al

Verifica parte IIB. Rif. Ghezzi et al Verifica parte IIB Rif. Ghezzi et al. 6.3.4.1 Sommario Test In piccolo White box Black box Condizioni di confine Problema dell' Oracolo In grande Test di modulo Test di integrazione Test di Sistema Test

Dettagli

Introduzione agli Algoritmi

Introduzione agli Algoritmi Introduzione agli Algoritmi Informatica Sara Zuppiroli A.A. 2012-2013 Informatica () Introduzione agli Algoritmi A.A. 2012-2013 1 / 25 Risoluzione dei problemi Dalla descrizione del problema all individuazione

Dettagli

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie Università degli Studi di Verona Dipartimento di Biotecnologie Laurea in Biotecnologie Corso di Informatica2014/2015 Algoritmie Diagrammidiflusso Gennaio 2015 - Sergio Marin Vargas Problemi e soluzioni

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano Cagnoni Il problema

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array e funzioni 2. Array e funzioni ricorsive 3. Array e confronto di array 2 Esercizio 1 Creare un programma che legga da

Dettagli

Operativamente, risolvere un problema con un approccio ricorsivo comporta

Operativamente, risolvere un problema con un approccio ricorsivo comporta LA RICORSIONE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini

Dettagli

Introduzione alla programmazione strutturata

Introduzione alla programmazione strutturata FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Prof. ELIO TOPPANO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio

Dettagli

IL COMPONENTE STACK (pila)

IL COMPONENTE STACK (pila) COMPONENTI SOFTWARE Diverse tipologie di componenti: Librerie semplici collezioni di procedure e funzioni.non fanno uso di variabili globali o statiche e non definiscono nuovi tipi (visibili all esterno)

Dettagli

Dall algoritmo al programma

Dall algoritmo al programma Dall algoritmo al programma Il concetto di algoritmo Un algoritmo è una sequenza di passi necessari per risolvere un problema o eseguire una computazione In alcuni casi, lo stesso problema/computazione

Dettagli

Il linguaggio di programmazione Python

Il linguaggio di programmazione Python Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione DAGLI ALGORITMI AI LINGUAGGI Linguaggi di Programmazione E` una notazione con cui e` possibile descrivere gli algoritmi. Programma: e` la rappresentazione di un algoritmo in un particolare linguaggio di

Dettagli

Un algoritmo ben fatto deve terminare dopo un numero finito

Un algoritmo ben fatto deve terminare dopo un numero finito Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani, e Programmi 1 Esempi di dal

Dettagli

Flow-chart. Introduzione agli algoritmi e ai diagrammi a blocchi.

Flow-chart. Introduzione agli algoritmi e ai diagrammi a blocchi. Flow-chart Introduzione agli algoritmi e ai diagrammi a blocchi ugo.rinaldi@gmail.com 1 Sommario Fasi dello sviluppo di un programma Algoritmo Dati: Variabili e Costanti Le operazioni tipiche Diagramma

Dettagli

Uso delle liste per rappresentare tipi astratti di dati

Uso delle liste per rappresentare tipi astratti di dati Uso delle liste per rappresentare tipi astratti di dati Il tipo astratto di dati dizionario Il tipo astratto dizionario è una collezione di elementi, ciascuno dei quali è costituito da una coppia (chiave,

Dettagli

Laboratorio di informatica Ingegneria meccanica

Laboratorio di informatica Ingegneria meccanica Laboratorio di informatica Ingegneria meccanica Lezione 7 19 novembre 2007 Concetto di modulo di un programma (1) Lo sviluppo di programmi complessi avviene tipicamente per composizione di moduli, ognuno

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Laurea in Ingegneria Civile e Ambientale Algoritmi e Algebra di Boole Stefano Cagnoni Il problema di fondo Descrizione

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Laurea in Ingegneria ivile e Ingegneria per l ambiente e il territorio Linguaggio : Le basi Stefano

Dettagli

Algoritmi e Linguaggi

Algoritmi e Linguaggi Algoritmi e Linguaggi Programmi e linguaggi Un calcolatore è solo un esecutore rapidissimo di istruzioni Un programma è un insieme di istruzioni codificate in un opportuno linguaggio 2 / 21 Linguaggi e

Dettagli

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori AXO - Architettura dei Calcolatori e Sistema Operativo organizzazione strutturata dei calcolatori I livelli I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sui livelli

Dettagli

Rappresentazione con i diagrammi di flusso (Flow - chart)

Rappresentazione con i diagrammi di flusso (Flow - chart) Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 11 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa

Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa LA RICORSIONE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini

Dettagli

Fondamenti dell informatica

Fondamenti dell informatica Fondamenti dell informatica Funzioni ricorsive e linguaggi funzionali Rosario Culmone rosario.culmone@unicam.it 16/4/2008 UNICAM - p. 1/21 Funzioni ricorsive Metodo di definizione di algoritmi introdotto

Dettagli

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina

Dettagli

Esercizi su alberi binari

Esercizi su alberi binari Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica

Dettagli

Sommario. Tecniche di Decomposizione dei Problemi. Algoritmi: Costruzione. Tipi di problemi

Sommario. Tecniche di Decomposizione dei Problemi. Algoritmi: Costruzione. Tipi di problemi Sommario Tecniche di Decomposizione dei Problemi Costruzione di algoritmi Approccio alla soluzione di problemi complessi Sequenza; Selezione; Iterazione; Ricorsione Tecniche di Decomposizione dei Problemi

Dettagli

02/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 8 STRUTTURE DI CONTROLLO (1)

02/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 8 STRUTTURE DI CONTROLLO (1) LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 8 STRUTTURE DI CONTROLLO (1) Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

Dettagli

Introduzione al linguaggio C Funzioni

Introduzione al linguaggio C Funzioni Introduzione al linguaggio C Funzioni Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano

Dettagli

e Algoritmi Marco Piastra Intelligenza Artificiale I Soddisfacibilità

e Algoritmi Marco Piastra Intelligenza Artificiale I Soddisfacibilità Intelligenza Artificiale I Soddisfacibilità e Algoritmi Marco Piastra Intelligenza Artificiale I - A.A. 2010- Soddisfacibilità e Semantic Tableau [1] Problemi e decidibilità (automatica) Problema Un problema

Dettagli

LA RICORSIONE LA RICORSIONE LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO

LA RICORSIONE LA RICORSIONE LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini

Dettagli

Uno stato soddisfa un obiettivo G se contiene tutti gli atomi di G (possibilmente anche altri)

Uno stato soddisfa un obiettivo G se contiene tutti gli atomi di G (possibilmente anche altri) Idea chiave della pianificazione Aprire la rappresentazione di stati, obiettivo e azioni: descrizione in qualche linguaggio formale (logica del primo ordine o sottolinguaggio) stati e obiettivo : rappresentati

Dettagli

Problemi, algoritmi, calcolatore

Problemi, algoritmi, calcolatore Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione

Dettagli

Descrizione di un algoritmo

Descrizione di un algoritmo Descrizione di un algoritmo Si descrive un algoritmo cercando di sintetizzare il più possibile la sua sequenza di passi; Non si utilizza un linguaggio di programmazione specifico, ma è meglio utilizzare

Dettagli

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra

Dettagli

Espressioni aritmetiche

Espressioni aritmetiche Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:

Dettagli

Introduzione all informatica

Introduzione all informatica Introduzione all informatica INFORMATICA Varie definizioni Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Definizione proposta Scienza della rappresentazione e dell

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi

Dettagli

Introduzione al C. Informatica Generale - Introduzione al C Versione 1.0, aa p.1/17

Introduzione al C. Informatica Generale - Introduzione al C Versione 1.0, aa p.1/17 Introduzione al C Informatica Generale - Introduzione al C Versione 1.0, aa 2005-2006 p.1/17 Linguaggi di programmazione Sono linguaggi che permettono la codifica di algoritmi in modo da renderli eseguibili,

Dettagli

C: primi elementi. Lezione 4

C: primi elementi. Lezione 4 C: primi elementi Lezione 4 Evoluzione del BCPL (1967) e B (1970), entrambi typeless Sviluppato da Dennis Ritchie nel 1972 ed implementato per il PDP-11 Usato per lo sviluppo del sistema operativo UNIX

Dettagli

Linguaggi e Ambienti di Programmazione

Linguaggi e Ambienti di Programmazione Linguaggi e Ambienti di Programmazione Principi e tecniche diffuse che si incontrano spesso nelle applicazioni dell informatica. Compilatori Editor di struttura: riceve in input una sequenza di comandi

Dettagli

Fondamenti di Informatica T. Linguaggio C: Stack e Ricorsione

Fondamenti di Informatica T. Linguaggio C: Stack e Ricorsione Linguaggio C: Stack e Ricorsione FUNZIONI: IL MODELLO A RUN-TIME Ogni volta che viene invocata una funzione: si crea di una nuova attivazione (istanza) del servitore viene allocata la memoria per i parametri

Dettagli

PROGRAMMAZIONE 2 15bisbis. OCaML: un veloce ripasso

PROGRAMMAZIONE 2 15bisbis. OCaML: un veloce ripasso PROGRAMMAZIONE 2 15bisbis. OCaML: un veloce ripasso PR2 2017-2018 1 Funzioni generiche Analizziamo la funzione length applicata a int list e string list let rec length (l : int list) : int = match l with

Dettagli

Come scrivere bene codice? (1 di 1)

Come scrivere bene codice? (1 di 1) DIAGRMMI DI FLUSSO Come scrivere bene codice? (1 di 1) Prima di iniziare a scrivere un programma: Acquisire profonda comprensione del problema; Progettare un approccio per la risoluzione del problema.

Dettagli