# Programació inductiva

La programació inductiva (IP) és una àrea especial de programació automàtica, que cobreix la investigació de la intel·ligència artificial i la programació, que aborda l'aprenentatge de programes típicament declaratius ( lògics o funcionals ) i sovint recursius a partir d'especificacions incompletes, com ara exemples d'entrada/sortida o restriccions.
Depenent del llenguatge de programació utilitzat, hi ha diversos tipus de programació inductiva. La programació funcional inductiva, que utilitza llenguatges de programació funcionals com Lisp o Haskell, i sobretot la programació lògica inductiva, que utilitza llenguatges de programació lògica com Prolog i altres representacions lògiques com les lògiques de descripció, han estat més destacades, però un altre llenguatge (de programació) També s'han utilitzat paradigmes, com ara la programació de restriccions o la programació probabilística.

## Definició

La programació inductiva incorpora tots els enfocaments relacionats amb programes d'aprenentatge o algorismes a partir d'especificacions ( formals ) incompletes. Les possibles entrades en un sistema IP són un conjunt d'entrades d'entrenament i sortides corresponents o una funció d'avaluació de la sortida, que descriu el comportament desitjat del programa previst, traces o seqüències d'acció que descriuen el procés de càlcul de sortides específiques, limitacions per al programa a induir. pel que fa a la seva eficiència temporal o la seva complexitat, diversos tipus de coneixements bàsics com ara tipus de dades estàndard, funcions predefinides a utilitzar, esquemes de programes o plantilles que descriuen el flux de dades del programa previst, heurístiques per guiar la cerca d'una solució o altres biaixos.
La sortida d'un sistema IP és un programa en algun llenguatge de programació arbitrari que conté condicionals i estructures de control de bucle o recursius, o qualsevol altre tipus de llenguatge de representació complet de Turing.
En moltes aplicacions, el programa de sortida ha de ser correcte pel que fa als exemples i l'especificació parcial, i això porta a considerar la programació inductiva com una àrea especial dins de la programació automàtica o síntesi de programes, generalment oposada a "deductiva". síntesi del programa, on l'especificació sol estar completa.
En altres casos, la programació inductiva es veu com una àrea més general on es pot utilitzar qualsevol programació declarativa o llenguatge de representació i fins i tot podem tenir algun grau d'error en els exemples, com en l'aprenentatge automàtic general, l'àrea més específica de la mineria d'estructures o l'àrea de la intel·ligència artificial simbòlica. Una característica distintiva és el nombre d'exemples o especificacions parcials necessaris. Normalment, les tècniques de programació inductiva poden aprendre només d'uns quants exemples.
La diversitat de la programació inductiva sol prové de les aplicacions i els llenguatges que s'utilitzen: a part de la programació lògica i la programació funcional, en la programació inductiva s'han utilitzat o suggerit altres paradigmes de programació i llenguatges de representació, com ara la programació lògica funcional, la programació de restriccions, la programació probabilística. programació, programació de lògica abductiva, lògica modal, llenguatges d' acció, llenguatges d' agent i molts tipus de llenguatges imperatius.

## Àrees d'aplicació

El primer taller sobre Enfocaments i Aplicacions de la Programació Inductiva (AAIP) celebrat conjuntament amb ICML 2005 va identificar totes les aplicacions on "cal l'aprenentatge de programes o regles recursives, [...] primer en el domini de l'enginyeria del programari on l'aprenentatge estructural, Els assistents de programari i els agents de programari poden ajudar a alleujar els programadors de les tasques rutinàries, donar suport a la programació per als usuaris finals o donar suport a programadors novells i sistemes tutors de programació. Altres àrees d'aplicació són l'aprenentatge d'idiomes, l'aprenentatge de regles de control recursiu per a la planificació d'IA, l'aprenentatge recursiu. conceptes en mineria web o per a transformacions de format de dades".
Des d'aleshores, aquestes i moltes altres àrees han demostrat ser nínxols d'aplicacions d'èxit per a la programació inductiva, com ara la programació d'usuari final, les àrees relacionades de programació per exemple i programació per demostració i tutoria intel·ligent. sistemes.
Altres àrees on la inferència inductiva s'ha aplicat recentment són l'adquisició de coneixement, la intel·ligència general artificial, l'aprenentatge de reforç i l'avaluació de la teoria, i la ciència cognitiva en general. També hi pot haver aplicacions potencials en agents intel·ligents, jocs, robòtica, personalització, intel·ligència ambiental i interfícies humanes.

## Referències

* ↑ Biermann, A.W. Encyclopedia of Artificial Intelligence, 1992, pàg. 18–35.
* ↑ Rich, C. Yovits. Approaches to automatic programming (en anglès). 37, 1993, p. 1–57 (Advances in Computers). DOI 10.1016/S0065-2458(08)60402-7. ISBN 9780120121373.
* ↑ Lowry. Automatic software design (en anglès), 1991.
* ↑ Manna, Z.; Waldinger, R. IEEE Trans Softw Eng, 18, 8, 1992, pàg. 674–704. DOI: 10.1109/32.153379.
* ↑ Flener, P. «Achievements and Prospects of Program Synthesis». A: Kakas. Computational Logic: Logic Programming and Beyond; Essays in Honour of Robert A. Kowalski (en anglès). LNAI 2407, 2002, p. 310–346 (Lecture Notes in Computer Science). DOI 10.1007/3-540-45628-7_13. ISBN 978-3-540-43959-2.
* ↑ Lieberman, H. End user development (en anglès). Springer, 2006.
* ↑ Lieberman, H. Your wish is my command: Programming by example (en anglès). Morgan Kaufmann, 2001. ISBN 9781558606883.
* ↑ Cypher, E. Watch what I do: programming by demonstration (en anglès). MIT Press, 1993. ISBN 9780262032131.
* ↑ Schmid, U.; Hofmann, M.; Kitzelmann, E. Proceedings of the Second Conference on Artificial General Intelligence, 2009, pàg. 162–167.
* ↑ Crossley, N.; Kitzelmann, E.; Hofmann, M.; Schmid, U. Proceedings of the Second Conference on Artificial General Intelligence, 2009, pàg. 19–24.
* ↑ Hernandez-Orallo, J. International Journal of Intelligent Systems, 15, 3, 2000, pàg. 241–264. DOI: 10.1002/(sici)1098-111x(200003)15:3<241::aid-int6>3.0.co;2-z.
* ↑ Kemp, C.; Goodman, N.; Tenenbaum, J.B. Advances in Neural Information Processing Systems, 2007, pàg. 753–760.
* ↑ Schmid, U.; Kitzelmann, E. Cognitive Systems Research, 12, 3, 2011, pàg. 237–248. DOI: 10.1016/j.cogsys.2010.12.002.
* ↑ Stuhlmuller, A.; Goodman, N.D. Cognitive Systems Research, 28, 2012, pàg. 80–99. DOI: 10.1016/j.cogsys.2013.07.003.