El cálculo de eventos es una teoría lógica para representar y razonar sobre eventos y sobre la forma en que estos modifican el estado de un mundo real o artificial. Aborda tanto los eventos de acción, realizados por agentes, como los eventos externos, que escapan al control de cualquier agente.
El cálculo de eventos representa el estado del mundo en cualquier momento mediante el conjunto de todos los hechos (llamados fluentes ) que se dan en ese momento. Los eventos inician y terminan los fluentes:
Un flujo se mantiene en un momento dado si se inicia por un evento que ocurre en un momento anterior y no se termina por ningún evento que ocurra mientras tanto.
El cálculo de eventos se diferencia de la mayoría de los demás enfoques para razonar sobre el cambio al reificar el tiempo, asociando los eventos con el momento en que ocurren y asociando los flujos con los momentos en que se mantienen.
La versión original del cálculo de eventos, introducida por Robert Kowalski y Marek Sergot en 1986, [ 1 ] se formuló como un programa lógico y se desarrolló para representar narrativas y actualizaciones de bases de datos. [ 2 ] Kave Eshghi mostró cómo usar el cálculo de eventos para la planificación, [ 3 ] mediante la abducción para generar acciones hipotéticas para lograr un estado de cosas deseado.
Fue ampliada por Murray Shanahan y Rob Miller en la década de 1990 [ 4 ] y reformulada en lógica de primer orden con circunscripción . Estas y posteriores extensiones se han utilizado para formalizar acciones no deterministas, acciones concurrentes, acciones con efectos retardados, cambios graduales, acciones con duración, cambio continuo y fluentes no inerciales.
Van Lambalgen y Hamm demostraron cómo una formulación del cálculo de eventos como un programa de lógica de restricciones puede usarse para dar una semántica algorítmica al tiempo y al aspecto en el lenguaje natural. [ 5 ]
Fluents y eventos
En el cálculo de eventos, los fluentes se reifican . Esto significa que los fluentes están representados por términos . Por ejemplo,expresa que elestá en elen ese momento. Aquíes un predicado, mientras quees un término. En general, la fórmula atómica
- expresa que else mantiene en el
Los eventos también se reifican y se representan mediante términos. Por ejemplo,expresa que else traslada alen ese momento. En general:
- expresa que elsucede en el
Las relaciones entre los eventos y los fluidos que inician y finalizan también están representadas por fórmulas atómicas:
- expresa que si elsucede en elentonces else convierte en realidad después de la.
- expresa que si elsucede en elentonces eldeja de ser cierto después de la.
Axioma independiente del dominio
El cálculo de eventos se desarrolló en parte como una alternativa al cálculo de situaciones , [ 6 ] [ 7 ] como una solución al problema del marco , de representar y razonar sobre la forma en que las acciones y otros eventos cambian el estado de algún mundo.
Existen muchas variantes del cálculo de eventos. Pero el axioma central de una de las variantes más simples y útiles puede expresarse como un único axioma independiente del dominio:
El axioma afirma que
- un fluido se sostiene a la vezsi
- un eventosucede en un momentoy
- iniciaeny
- es antes y
- No es el caso que exista un eventoy un tiempode tal manera que
- sucede eny
- terminaeny
- es antes o al mismo tiempo quey
- es antes.
El cálculo de eventos resuelve el problema del marco interpretando este axioma en una lógica no monótona , como la lógica de primer orden con circunscripción [ 8 ] o, como un programa lógico , en la lógica de cláusulas de Horn con la negación como fallo . [ 1 ] De hecho, la circunscripción es una de las varias semánticas que se pueden dar a la negación como fallo, [ 9 ] y está estrechamente relacionada con la semántica de completitud para programas lógicos [ 10 ] (que interpreta if como if y only if ).
El axioma central del cálculo de eventos define el predicado en términos del,,,ypredicados. Para aplicar el cálculo de eventos a un problema particular, también es necesario definir estos otros predicados.
El cálculo de eventos es compatible con diferentes definiciones de los predicados temporales.yEn la mayoría de las aplicaciones, los tiempos se representan de forma discreta, mediante números naturales, o de forma continua, mediante números reales no negativos. Sin embargo, los tiempos también pueden estar parcialmente ordenados.
Axiomas dependientes del dominio
Para aplicar el cálculo de eventos en un dominio de problemas particular, es necesario definir elypredicados para ese dominio. Por ejemplo, en el dominio del mundo de los bloques , un eventoEl acto de mover un objeto a un lugar inicia la fluidez, que expresa que el objeto está en el lugar y termina la fluidez, lo que indica que el objeto se encuentra en un lugar diferente:
Si queremos representar el hecho de que unse mantiene en un estado inicial, digamos en el tiempo 1, entonces con el axioma central simple anterior necesitamos un evento, digamos, que inicia elen cualquier momento:
Axiomas dependientes del problema
Para aplicar el cálculo de eventos, dadas las definiciones de,,,ypredicados, es necesario definir elpredicados que describen el contexto específico del problema.
Por ejemplo, en el dominio del mundo de los bloques, podríamos querer describir un estado inicial en el que hay dos bloques, un bloque rojo sobre un bloque verde sobre una mesa, como un semáforo de juguete, seguido de mover el bloque rojo a la mesa en el tiempo 1 y mover el bloque verde sobre el bloque rojo en el tiempo 3, poniendo el semáforo boca abajo:
Una implementación de Prolog
El cálculo de eventos tiene una implementación natural en Prolog puro (sin características que no tengan una interpretación lógica). Por ejemplo, el escenario del mundo de bloques anterior se puede implementar (con pequeñas modificaciones) mediante el programa:
holdsAt ( Fluent , Time2 ) :- before ( Time1 , Time2 ), happensAt ( Event , Time1 ), initiates ( Event , Fluent , Time1 ), not ( clipped ( Fluent , Time1 , Time2 )).recortado ( Fluent , Time1 , Time2 ) :- termina ( Event , Fluent , Time ), sucedeEn ( Event , Time ), antes ( Time1 , Time ), antes ( Time , Time2 ).inicia ( inicializar ( fluido ), fluido , tiempo ). inicia ( mover ( objeto , lugar ), en ( objeto , lugar ), tiempo ). termina ( mover ( objeto , lugar ), en ( objeto , lugar1 ), tiempo ).happenAt ( initialise ( on ( green_block , table )), 0 ). happenAt ( initialise ( on ( red_block , green_block )), 0 ). happenAt ( move ( red_block , table ), 1 ). happenAt ( move ( green_block , red_block ), 3 ).El programa Prolog difiere de la formalización anterior en los siguientes aspectos:
- El axioma central ha sido reescrito, utilizando un predicado auxiliar. Esta reescritura permite la eliminación de cuantificadores existenciales, conforme a la convención de Prolog de que todas las variables están cuantificadas universalmente.
clipped(Fact,Time1,Time2). - Se ha cambiado el orden de las condiciones en el cuerpo del axioma o axiomas centrales para generar respuestas a las consultas en orden temporal.
- La igualdad en la condiciónse ha eliminado de la condición correspondiente Esto incorpora una suposición simplificadora de que los eventos no inician y terminan simultáneamente el mismo flujo. Como consecuencia, la definición de la
before(Time1,Time).El predicado se ha simplificado eliminando la condición de que.
Dada una definición apropiada [ nota 1 ] del predicado, el programa Prolog genera todas las respuestas a la consulta ¿qué se cumple cuándo? en orden temporal:before(Time1,Time2),
?- holdsAt ( Fluent , Time ). Fluent = on ( green_block , table ), Time = 1. Fluent = on ( red_block , green_block ), Time = 1. Fluent = on ( green_block , table ), Time = 2. Fluent = on ( red_block , table ), Time = 2. Fluent = on ( green_block , table ), Time = 3. Fluent = on ( red_block , table ), Time = 3. Fluent = on ( red_block , table ), Time = 4. Fluent = on ( green_block , red_block ), Time = 4. Fluent = on ( red_block , table ), Time = 5. Fluent = on ( green_block , red_block ), Time = 5.El programa también puede responder a consultas negativas, como por ejemplo, ¿ qué fluentes no se cumplen en qué momentos? Sin embargo, para que funcione correctamente, todas las variables en condiciones negativas deben primero instanciarse como términos que no contienen variables. Por ejemplo:
timePoint ( 1 ). timePoint ( 2 ). timePoint ( 3 ). timePoint ( 4 ). timePoint ( 5 ).fluent ( en ( bloque_rojo , bloque_verde )). fluent ( en ( bloque_verde , bloque_rojo )). fluent ( en ( bloque_rojo , tabla )). fluent ( en ( bloque_verde , tabla )).?- timePoint ( T ), fluent ( F ), not ( holdsAt ( F , T )). F = on ( green_block , red_block ), T = 1. F = on ( red_block , table ), T = 1. F = on ( red_block , green_block ), T = 2. F = on ( green_block , red_block ), T = 2. F = on ( red_block , green_block ), T = 3. F = on ( green_block , red_block ), T = 3. F = on ( red_block , green_block ), T = 4. F = on ( green_block , table ), T = 4. F = on ( red_block , green_block ), T = 5. F = on ( green_block , table ), T = 5.Herramientas de razonamiento
Además de Prolog y sus variantes, también están disponibles otras herramientas para el razonamiento mediante el cálculo de eventos:
- Planificadores de cálculo de eventos abductivos
- Razonador de cálculo de eventos discretos
- Programación de conjuntos de respuestas de cálculo de eventos
- Cálculo de eventos reactivos
- Cálculo de eventos en tiempo de ejecución (RTEC)
- Cálculo de eventos probabilísticos epistémicos (EPEC) [ 11 ]
Extensiones
Entre las extensiones notables del cálculo de eventos se incluyen variantes basadas en redes de lógica de Markov [ 12 ] probabilísticas , [ 13 ] epistémicas [ 14 ] y sus combinaciones. [ 15 ]
Véase también
Referencias
- 1 2 Kowalski, Robert; Sergot, Marek (1986-03-01). "Un cálculo de eventos basado en la lógica" . New Generation Computing . 4 (1): 67– 95. doi : 10.1007/BF03037383 . ISSN 1882-7055 . S2CID 7584513 .
- ↑ Kowalski, Robert (1992-01-01). "Actualizaciones de bases de datos en el cálculo de eventos" . The Journal of Logic Programming . 12 (1): 121– 146. doi : 10.1016/0743-1066(92)90041-Z . ISSN 0743-1066 .
- ↑ Eshghi, Kave (1988). "Planificación abductiva con cálculo de eventos" . Iclp/SLP : 562–579 .
- ↑ Miller, Rob; Shanahan, Murray (2002), "Algunas formulaciones alternativas del cálculo de eventos" , en Kakas, Antonis C.; Sadri, Fariba (eds.), Lógica computacional: programación lógica y más allá: ensayos en honor a Robert A. Kowalski, Parte II , Lecture Notes in Computer Science, Berlín, Heidelberg: Springer, pp. 452–490 , doi : 10.1007/3-540-45632-5_17 , ISBN 978-3-540-45632-2, consultado el 5 de octubre de 2020
- ↑ Lambalgen, Hamm (2005). El tratamiento adecuado de los eventos . Malden, MA: Blackwell Pub. ISBN 978-0-470-75925-7OCLC 212129657
- ↑ J. McCarthy y P. Hayes (1969). Algunos problemas filosóficos desde el punto de vista de la inteligencia artificial . En B. Meltzer y D. Michie, editores, Machine Intelligence , 4:463–502. Edinburgh University Press, 1969.
- ↑ R. Reiter (1991). El problema del marco en el cálculo de situaciones: una solución simple (a veces) y un resultado de completitud para la regresión de objetivos. En Vladimir Lifshitz, editor, Inteligencia artificial y teoría matemática de la computación: artículos en honor a John McCarthy , páginas 359–380, San Diego, CA, EE. UU. Academic Press Professional, Inc. 1991.
- ↑ Shanahan, M. (1997) Resolviendo el problema del marco: Una investigación matemática de la ley de inercia de sentido común . MIT Press.
- ↑ Gelfond, M.; Przymusinska, H.; Przymusinski, T. (1989). "Sobre la relación entre circunscripción y negación como fallo". Inteligencia Artificial . 38 (1): 75– 94. doi : 10.1016/0004-3702(89)90068-4 .
- ↑ Clark, KL (1977). «La negación como fracaso». Lógica y bases de datos . Boston, MA: Springer US. págs. 293–322 . doi : 10.1007/978-1-4684-3384-5_11 . ISBN 978-1-4684-3386-9.
- ↑ D'Asaro, Fabio Aurelio; Bikakis, Antonis; Dickens, Luke; Miller, Rob (2024). "Una implementación basada en programación de conjuntos de respuestas del cálculo de eventos probabilísticos epistémicos" . International Journal of Approximate Reasoning . 165 109101. doi : 10.1016/j.ijar.2023.109101 . ISSN 0888-613X .
- ↑ Skarlatidis, Anastasios; Paliouras, Georgios; Artikis, Alexander; Vouros, George A. (2015-02-17). "Cálculo probabilístico de eventos para el reconocimiento de eventos" . ACM Transactions on Computational Logic . 16 (2): 11:1–11:37. arXiv : 1207.3270 . doi : 10.1145/2699916 . ISSN 1529-3785 . S2CID 6389629 .
- ↑ Skarlatidis, Anastasios; Artikis, Alexander; Filippou, Jason; Paliouras, Georgios (marzo de 2015). "Un cálculo de eventos de programación lógica probabilística" . Theory and Practice of Logic Programming . 15 (2): 213– 245. arXiv : 1204.1851 . doi : 10.1017/S1471068413000690 . ISSN 1471-0684 . S2CID 5701272 .
- ↑ Ma, Jiefei; Miller, Rob; Morgenstern, Leora; Patkos, Theodore (2014-07-28). "Un cálculo de eventos epistémicos para el razonamiento basado en ASP sobre el conocimiento del pasado, presente y futuro" . EPiC Series in Computing . 26. EasyChair: 75–87 . doi : 10.29007/zswj .
- ↑ D'Asaro, Fabio Aurelio; Bikakis, Antonis; Dickens, Luke; Miller, Rob (2020-10-01). "Razonamiento probabilístico sobre narrativas de acción epistémica" . Inteligencia Artificial . 287 103352. doi : 10.1016/j.artint.2020.103352 . ISSN 0004-3702 . S2CID 221521535 .
Lecturas adicionales
- Brandano, S. (2001) " Evaluación del cálculo de eventos ," Simposio IEEE TIME : 7-12.
- R. Kowalski y F. Sadri (1995) " Variantes del cálculo de eventos ", ICLP : 67-81.
- Mueller, Erik T. (2015). Razonamiento de sentido común: Un enfoque basado en el cálculo de eventos (2.ª ed.) . Waltham, MA: Morgan Kaufmann/Elsevier. ISBN 978-0128014165(Guía para el uso del cálculo de eventos)
- Shanahan, M. (1997) Resolviendo el problema del marco: Una investigación matemática de la ley de inercia del sentido común . MIT Press.
- Shanahan, M. (1999) " El cálculo de eventos explicado " Springer Verlag, LNAI (1600): 409-30.
Notas
- ↑ Por ejemplo:
antes ( Tiempo1 , Tiempo2 ) :- línea de tiempo ( Eternidad ), agregar ( Antes , [ Tiempo2 | Después ], Eternidad ), miembro ( Tiempo1 , Antes ).línea de tiempo ([ 0 , 1 , 2 , 3 , 4 , 5 ]).
- Presentaciones de 1986
- Lógica en informática
- Programación lógica
- Representación del conocimiento
- Cálculos lógicos