Crea sito

Category: Concetti (page 1 of 4)

Programmazione Logica

prolog

prolog2

Il Prolog è impiegato in molti programmi di intelligenza artificiale, la sua sintassi e la semantica sono molto semplici e chiare (lo scopo primitivo era quello di fornire uno strumento di lavoro a linguisti privi di conoscenze informatiche).
Il Prolog si basa sul calcolo dei predicati (precisamente il calcolo di predicati del primo ordine); tuttavia la sintassi è limitata a formule dette clausole di Horn che sono disgiunzioni di letterali del primo ordine quantificate universalmente con al più un letterale positivo.
L’esecuzione di un programma Prolog è comparabile alla dimostrazione di un teorema mediante la regola di inferenza detta risoluzione (introdotta da Robinson nel 1965). I concetti fondamentali sono l’unificazione, la ricorsione in coda e il backtracking.

backtracking e prolog
——————
Il backtracking (in italiano, ritorno all’indietro) è una tecnica per trovare soluzioni a problemi in cui devono essere soddisfatti dei vincoli. Questa tecnica enumera tutte le possibili soluzioni e scarta quelle che non soddisfano i vincoli.
Una tecnica classica consiste nell’esplorazione di strutture ad albero e tenere traccia di tutti i nodi e i rami visitati in precedenza, in modo da poter tornare indietro al più vicino nodo che conteneva un cammino ancora inesplorato nel caso che la ricerca nel ramo attuale non abbia successo. I nodi a profondità uguale rappresentano i possibili valori di una variabile.
Una applicazione del backtracking è nei programmi per giocare a scacchi, che generano tutte le mosse possibili per una profondità di N mosse a partire da quella attuale e poi esaminano con il backtracking le varie alternative, selezionando alla fine quella migliore.

Tipi di inferenza
————–
Deduttiva: si deriva una conclusione che è latente, implicita, prevista nelle premesse (l’informazione di cui siamo in possesso).
Induttiva: la conclusione aggiunge informazione alle premesse, non è una conseguenza logica delle premesse; caso tipico: la generalizzazione

Inferenze inconsce
• Il padre del mio amico è anche il padre di sua sorella
• Un triangolo ha tre lati
• Il libro che leggo ora è lo stesso che leggevo ieri
• Il mio vicino di casa è anche la persona che si muove al piano di sopra

Il metodo deduttivo o deduzione
—————————
Il metodo deduttivo o deduzione è il procedimento razionale che fa derivare una certa conclusione da premesse più generiche, dentro cui quella conclusione è implicita.
L’introduzione del concetto di deduzione si deve ad Aristotele (384 a.C.-322 a.C.), il quale lo identificava sostanzialmente con il sillogismo. Da questa identificazione deriva l’interpretazione tradizionale, accettata fino ai tempi moderni, secondo la quale il procedimento di deduzione consente di partire da una legge universale per giungere a conclusioni particolari. Il procedimento contrario viene chiamato induzione, che viceversa muove dal particolare all’universale.
Un esempio di sillogismo aristotelico è il seguente: «Tutti gli uomini sono mortali; Socrate è un uomo; dunque Socrate è mortale».
La differenza tra ragionamento deduttivo e induttivo non esiste sul piano pratico, essendo solo una speculazione sofistica di tipo filosofico. Tutti i ragionamenti sono induttivi, anche quelli matematici, altrimenti non sono “ragionamenti” ma conclusioni tautologiche, del tutto prive di contenuto.
Ma se il ragionamento che “produce conoscenza” è solo induttivo, si potrebbe in sostanza dire che l’induzione non è altro che una deduzione basata sull’osservazione dei fatti o su un’esperienza personale.

L’iterazione

– Concetti –

iterazione-2-flow-chartiterazione-1-flow-chart

 

Continua a leggere …

La Selezione

– Concetti –

foto-iniziale

Continua a leggere …

La Sequenza

– Concetti –

La sequenza è la struttura di controllo fondamentale di qualsiasi linguaggio imperativo, inclusi i linguaggi macchina. Esiste un solo ingresso e una sola uscita. Nella sequenza le istruzioni vengono eseguite in successione dall’alto verso il basso, una dopo l’altra. Non ha una espressione sintattica esplicita. Ad esempio nel seguente flow-chart vengono eseguite una dopo l’altra dall’alto verso il basso le seguenti istruzioni:

  1.  Acquisisci da tastiera la misura del raggio;
  2. Calcola l’area e memorizzala nella variabile area;
  3. Calcola il perimetro e memorizzala nella variabile perimetro;
  4. Visualizza il valore della variabile area;
  5. Visualizza il valore della variabile perimetro.

sequenza flowchart

Ecco alcuni esempi di Coding della sequenza in vari linguaggi:

C++
Python
Scratch
VBA
JavaScript
AppInvetor

Strutture che controllano il flusso delle istruzioni

– Concetti –

Il teorema di Böhm-Jacopini, enunciato nel 1966 dagli informatici Corrado Böhm e Giuseppe Jacopini, afferma che qualunque algoritmo può essere realizzato utilizzando le sole tre strutture di controllo fondamentali: la sequenza, la selezione ed il ciclo. In sostanza la possibilità di eseguire i tre tipi di strutture fondamentali rende un linguaggio di programmazione “completo”, nel senso che non sono necessarie altre strutture per eseguire qualsiasi algoritmo. Algoritmi complessi possono essere costituiti da molte sequenze, selezioni e cicli a volte anche annidati uno dentro l’altro.

Continua a leggere …

Older posts