Dissertação Gottin
Transcrição
Dissertação Gottin
Universidade Federal do Estado do Rio de Janeiro Departamento de Informática Aplicada Programa de Pós-Graduação em Informática VERIFICAÇÃO ABSTRATA DE PROPRIEDADES DRAMÁTICAS CONTÍNUAS EM EVENTOS NÃO DETERMINÍSTICOS Vinícius Michel Gottin Orientador Prof. Dr. Angelo Ernani Maia Ciarlini Rio de Janeiro 2013 VERIFICAÇÃO ABSTRATA DE PROPRIEDADES DRAMÁTICAS CONTÍNUAS EM EVENTOS NÃO DETERMINÍSTICOS Vinícius Michel Gottin DISSERTAÇÃO APRESENTADA COMO REQUISITO PARCIAL PARA OBTENÇÃO DO TÍTULO DE MESTRE PELO PROGRAMA DE PÓSGRADUAÇÃO EM INFORMÁTICA DA UNIVERSIDADE FEDERAL DO ESTADO DO RIO DE JANEIRO (UNIRIO). APROVADA PELA COMISSÃO EXAMINADORA ABAIXO ASSINADA. Aprovada por: _______________________________________________ Prof. Angelo Ernani Maia Ciarlini, D.Sc. – UNIRIO _______________________________________________ Prof. Sean Wolfgand Matsui Siqueira, D.Sc. – UNIRIO _______________________________________________ Prof. Antonio Luz Furtado, Ph.D. – PUC-RIO _______________________________________________ Prof. Bruno Feijó, Ph.D. – PUC-RIO RIO DE JANEIRO, RJ - BRASIL OUTUBRO DE 2013 ii Gottin, Vinícius Michel. G686 Verificação abstrata de propriedades dramáticas contínuas em eventos não determinísticos / Vinícius Michel Gottin, 2013. 85 f. ; 30 cm Orientador: Angelo Ernani Maia Ciarlini. Dissertação (Mestrado em Informática) - Universidade Federal do Estado do Rio de Janeiro, Rio de Janeiro, 2013. 1. Inteligência artificial. 2. Storytelling interativo. 3. Dramatização. 4.Interação homem- máquina. 4. Programação lógica (Computação). I. Ciarlini, Angelo Ernani Maia. II. Universidade Federal do Estado do Rio de Janeiro. Centro de Ciências Exatas e Tecnológicas. Curso de Mestrado em Informática. III. Título. CDD – 006.3 iii Dedicado a meus pais. iv Agradecimentos Agradeço ao professor e orientador Angelo Ciarlini, que tornou todo o trabalho possível e interessante. Também ao colega Paulo Abelha, por ter compartilhado as horas de trabalho. É um privilégio poder trabalhar ao lado de quem gosta de resolver problemas complexos. Agradeço a todos que me acompanharam ao longo do período do mestrado. Aos colegas e professores, pela parceria e apoio. Aos amigos e colegas de república que me receberam no Rio de Janeiro. Aos amigos distantes, que ainda mantêm contato. Agradeço a minha família por me apoiar e pela paciência com a falta de visitas. Agradeço à Luíza, por ter me acompanhado, me inspirado e compartilhado a minha vontade de prosseguir estudando longe de casa. Por fim, agradeço à CAPES pelo financiamento e incentivos. v GOTTIN, Vinícius Michel. Verificação Abstrata de Propriedades Dramáticas Contínuas em Eventos Não Determinísticos. UNIRIO, 2013. 85 páginas. Dissertação de Mestrado. Departamento de Informática Aplicada, UNIRIO. RESUMO Em sistemas de Storytelling Interativo, uma narrativa é gerada e dramatizada sob a influência da interação com um ou mais usuários. O uso de técnicas de planejamento automatizado para a geração de enredos em sistemas de Storytelling Interativo provê a garantia de coerência com diversidade, em particular quando considera o não determinismo dos eventos. Para possibilitar que o processo de geração de enredos atue em paralelo com a dramatização, evitando pausas na experiência do usuário, é necessário que o planejamento seja realizado no menor tempo possível. A consideração de restrições sobre propriedades dramáticas relevantes aumentaria o poder expressivo conferido ao autor e a qualidade estética da história. Considerar que essas propriedades variam continuamente ao longo dos eventos, de forma que possam representar aspectos dramatizáveis, tornaria o processo de planejamento mais complexo. Para evitar que a complexidade adicional torne o paralelismo entre a geração e dramatização inviáveis, propomos um modelo no qual uma pré-verificação exaustiva das restrições sobre propriedades dramáticas em eventos não determinísticos provê resultados indexados ao planejamento. Para tanto, trabalhamo com uma lógica de tempo contínuo ramificado proposta para o contexto de Storytelling, e utiliza-se programação em lógica com restrições para verificar a satisfação de restrições sobre a variação linear de propriedades contínuas ao longo de eventos narrativos abstratos e não determinísticos. Palavras-chave: Storytelling Interativo; Propriedades Dramáticas, Arco Dramático; Verificação de Modelos; Execução Simbólica, Inteligência Artificial; Não determinismo vi ABSTRACT In Interactive Storytelling systems, a narrative is generated and dramatized under the influence of one or more user`s interaction. Applying automated planning techniques for the generation of plots guarantees coherence and the necessary diversity for a good variability, in particular when nondeterministic events are considered. In order to enable the plot generation process to act in parallel with the dramatization, avoiding breaks in user experience, it is necessary for the planning to be accomplished in reasonable time. The consideration of restrictions over dramatic properties would enhance the author’s expressive power and the story’s aesthetic quality. Considering that these properties vary continuously during events, in order to represent dramatizable aspects, would add complexity to the planning process. To avoid this additional complexity turning the parallelism between generation and dramatization impracticable, we propose a model in which an exhaustive offline verification of restrictions over dramatic properties in nondeterministic events generates indexed results to the planning process. To do so, we work with continuous ramified time logic, proposed for the Storytelling context, and apply constraint logic programming in order to verify the satisfaction of restrictions over continuous properties during abstract narrative nondeterministic events. Keywords: Interactive Storytelling; Dramatic properties; Model checking; Symbollic execution; Artificial Intelligence; Nondeterminism vii SUMÁRIO 1 Introdução .......................................................................................................................................... 1 1.1 1.2 1.3 1.4 1.5 2 Motivação ................................................................................................................................... 1 Definição do problema ................................................................................................................ 3 Proposta ...................................................................................................................................... 6 Hipótese ...................................................................................................................................... 6 Estrutura ...................................................................................................................................... 7 Fundamentação Teórica .................................................................................................................... 8 2.1 Storytelling Interativo ................................................................................................................. 8 2.1.1 Planejamento em Storytelling ............................................................................................... 10 2.1.2 Arcos dramáticos .................................................................................................................. 12 2.1.3 Tempo contínuo em Storytelling ........................................................................................... 13 2.1.4 Logtell ................................................................................................................................... 14 2.2 Verificação de Proriedades ....................................................................................................... 14 2.2.1 Model checking ..................................................................................................................... 15 2.2.2 Sistemas de transição de estados .......................................................................................... 16 2.2.3 Execução Simbólica .............................................................................................................. 18 2.3 Contraint Logic Programming .................................................................................................. 19 2.4 CTL ........................................................................................................................................... 21 2.4.1 CTL-estendida ...................................................................................................................... 22 3 Modelo .............................................................................................................................................. 24 3.1 Modelo de conteúdo .................................................................................................................. 24 3.1.1 Propriedades dramáticas ..................................................................................................... 25 3.1.2 Fórmulas típicas em CTL-estendida ..................................................................................... 26 3.1.3 Eventos ................................................................................................................................. 26 3.2 Modelo de verificação e consulta .............................................................................................. 30 4 Algoritmos de Verificação Abstrata ............................................................................................... 36 Processamento exaustivo .......................................................................................................... 36 4.1 4.1.1 Verify_Formulae_Events ...................................................................................................... 37 4.1.2 Gen_Tree .............................................................................................................................. 39 4.2 Algoritmo de verificação .......................................................................................................... 42 4.2.1 Tratamento das situações ..................................................................................................... 45 4.3 Satisfação .................................................................................................................................. 48 4.4 Consulta .................................................................................................................................... 64 5 Resultados e avaliação ..................................................................................................................... 67 6 Conclusões e Trabalhos Futuros .................................................................................................... 74 6.1 6.2 6.3 7 Considerações Gerais ................................................................................................................ 74 Principais Contribuições ........................................................................................................... 75 Trabalhos Futuros ..................................................................................................................... 76 Referências ....................................................................................................................................... 79 viii LISTA DE FIGURAS Figura 1.1. Representação do ciclo contínuo de geração-dramatização, com os capítulos dramatizados tendo sua continuação gerada em paralelo........................................................................................... 2 Figura 1.2. Comparação da consideração de um evento no processo de planejamento quando não é (esq.) e quando é (dir.) necessário considerar a variação de propriedades dramáticas. Os quadrados representam estados internos do evento, do inicial (mais à esquerda) aos finais (mais à direita). ....... 3 Figura 1.3. Abordagem de geração e teste, com etapa de verificação intercalada. Os planos desperdiçados causam a demora excessiva na geração de um capítulo, quebrando o ciclo de geração-dramatização em paralelo. ......................................................................................................................................... 4 Figura 1.4. Aumento no número de alternativas a serem consideradas causando uma diferença exponencialmente maior no tempo necessário para o planejamento; e a subsequente quebra no ciclo contínuo de geração/dramatização. ...................................................................................................... 5 Figura 3.1. Modelo de conteúdo representando os conjuntos de Eventos, de Fórmulas típicas e Propriedades dramáticas em cada instância de Gênero. ................................................................... 25 Figura 3.2. Autômato não determinístico associado ao evento Try to Kidnap. ......................................... 27 Figura 3.3. Variação linear das propriedades dramáticas associada aos estados do autômato Try to Kidnap. .............................................................................................................................................. 29 Figura 4.1. Chamada, pelo algoritmo de verificação, ao algoritmo de satisfação para fórmula com expressão interna básica. ................................................................................................................... 52 Figura 4.2. Variação da propriedade Joy ao longo de uma transição na qual dobra de valor, em relação a uma variável que representa o tempo transcorrido. ........................................................................... 53 Figura 4.3. Resultado da chamada ao algoritmo de satistafação de fórmula sobre transição. ................... 54 Figura 4.4. No tratamento de fórmulas aninhadas, a expressão interna é dividida. Uma chamada recursiva ao algoritmo de satisfação é realizada sobre a fórmula contendo a primeira parcela de conjunção original, resultando em uma lista de alternativas parciais.................................................................. 61 Figura 4.5. Tratamento de fórmula interna de fórmula aninhada. As alternativas geradas na satisfação do primeiro termo da fórmula são recebidas como L_Above, e são utilizadas para gerar a satisfação da fórmula interna de forma hierarquicamente dependente. ................................................................... 62 Figura 5.1. Autômato descrevendo as possíveis execuções de dramatização do evento Fight to the Death. ........................................................................................................................................................... 69 Figura 5.2. Árvore de execução gerada a partir do autômato do evento Fight to the Death. ...................... 70 ix LISTA DE TABELAS Tabela 1. Exemplos semânticos de consulta. ............................................................................................. 31 Tabela 2. Exemplo resultado condicionados à restrições sobre propriedades de contexto. ....................... 32 Tabela 3. Tratamento de alternativas de acordo com operadores de estado. ............................................. 56 Tabela 4. Tabela de composição de alternativas por operador no caso da satisfação básica. .................... 58 Tabela 5. Tabela de composições de resultados de alternativas hierárquicas. ........................................... 63 Tabela 6. Exemplos de restrições e fórmulas equivalentes representadas no modelo. .............................. 67 Tabela 7. Resultados da verificação de AF ({Joy ≥ 50} and EG {Fear ≥ Joy }) sobre o evento Fight to the Death............................................................................................................................................ 71 x LISTA DE ALGORITMOS Algoritmo 4-1. VERIFY_FORMULAE_EVENTS. ........................................................................................... 38 Algoritmo 4-2. GEN_TREE. ........................................................................................................................ 40 Algoritmo 4-3. VERIFY. ............................................................................................................................. 42 Algoritmo 4-4. ENDPATHRESIDS. .............................................................................................................. 45 Algoritmo 4-5. DISTRIBUTERESIDS. ........................................................................................................... 47 Algoritmo 4-6. COMBINESITUATIONS. ....................................................................................................... 48 Algoritmo 4-7. SATISFACTION. .................................................................................................................. 49 Algoritmo 4-8. SATISFACTION_BASIC. ....................................................................................................... 51 Algoritmo 4-9. SATISFACTION_DEPEND. ................................................................................................... 59 Algoritmo 4-10. CONSULT. ........................................................................................................................ 66 xi 1 Introdução 1.1 Motivação Storytelling Interativo é o nome dado às aplicações nas quais uma narrativa é gerada e contada sob a influência da interação do usuário. Sistemas de Storytelling Interativo encontram uso em aplicações educativas, de entretenimento e simulação; e o seu desenvolvimento é tópico de pesquisa recente e atual em diversas disciplinas. As métricas de avaliação da qualidade da experiência do usuário em sistema de Storytelling Interativo são diversas (ROBERTS e ISBELL, 2008): além de quesitos como a velocidade (o usuário não deve perceber pausas no desenrolar da ação) e adaptabilidade (as histórias devem ser adequadas ao gosto particular do usuário); há o quesito da rejogabilidade (a variabilidade, capacidade do sistema de oferecer experiências diversas em múltiplas execuções). A coerência dos enredos gerados também é apontada como uma característica desejável (KARLSSON et al., 2006), e conciliar esses aspectos por vezes conflitantes é um dos desafios que esses sistemas enfrentam. No presente trabalho, considera-se o paradigma de Storytelling Interativo no qual a narrativa é gerada através de planejamento automatizado. Essa técnica, oriunda da área da inteligência artificial, é utilizada por sistema de Storytelling Interativo devido à semelhança natural entre um plano (como uma sequência de ações) e um enredo (como uma sequência de eventos) (PORTEOUS et al., 2010). Em especial, assume-se a aplicação de planejamento não determinístico pelo suporte dessa técnica à geração de histórias diversas, com possibilidades flexíveis de interação do usuário (promovendo a rejogabilidade), mas ainda garantindo a coerência na narrativa (SILVA, 2010). Em especial, o tratamento de alternativas não determinísticas nos eventos gera um grande aumento da variabilidade por permitir que histórias se desenrolem de meios diversos nas mesmas condições. O tratamento de não determinismo, no entanto, implica em uma maior complexidade computacional no problema de planejamento. 1 A qualidade dramática dos enredos gerados por um sistema de Storytelling Interativo é determinante para a boa experiência do usuário. Alguns dos aspectos estéticos explorados na literatura são a representação da psicologia de personagens (PIZZI, 2011) e a adequação da história a um arco de tensão desejado, à intenção autoral ou a preferências do usuário (promovendo a adaptabilidade). No presente trabalho, busca-se conciliar a expressão desses aspectos estéticos com os requisitos de coerência e rejogabilidade. Como uma exigência adicional, assume-se a necessidade de um ciclo de geração-dramatização em paralelo, no qual o sistema dramatiza uma porção (capítulo) da história enquanto as alternativas possíveis de continuação são geradas – garantindo a velocidade do sistema. Esse modelo garante uma maior flexibilidade no tratamento da interação do usuário, e é particularmente interessante para a aplicação de sistemas de Storytelling Interativo para a TV Digital (CAMANHO, 2009) e em arquiteturas para jogos multi-usuário (VIDAL e NAREYEK, 2011). Estabelece, porém, requisitos mais estritos de eficiência no processo de geração: as alternativas de continuação devem estar prontas quando a dramatização do capítulo atual se encerra. Na Figura 1.1, o ciclo é representado conceitualmente. Figura 1.1. Representação do ciclo contínuo de geração-dramatização, com os capítulos dramatizados tendo sua continuação gerada em paralelo. Na figura, tem-se que o eixo horizontal representa o tempo. O ponto o representa o ponto no qual o processo de planejamento inicia a geração do enredo. Assim que um primeiro capítulo é gerado, ele passa a ser dramatizado. O ponto i no tempo representa o início da dramatização – a partir de então, a dramatização dos capítulos subsequentes deve ser contínua. Isso implica em um limite estrito de tempo para que o planejamento gere o capítulo seguinte. Nota-se, ainda, que sendo necessário considerar eventos não determínistico, cada capítulo pode ter múltiplos finais diferentes. Isso implica na necesside de gerar diversas continuações: uma para cada possível final do capítulo. Assim, as restrições de tempo para a geração de capítulos na continuação é ainda maior 2 – de fato, divide-se o tempo disponível para a geração da continuação pelo número de finais possíveis do capítulo anterior. 1.2 Definição do problema Dado o objetivo de representar propriedades dramáticas e garantir requisitos sobre suas variações nas histórias geradas, surge o problema da complexidade adicional que a verificação desses requisitos adiciona ao processo de planejamento. A origem dessa complexidade é demonstrada na Figura 1.2. Figura 1.2. Comparação da consideração de um evento no processo de planejamento quando não é (esq.) e quando é (dir.) necessário considerar a variação de propriedades dramáticas. Os quadrados representam estados internos do evento, do inicial (mais à esquerda) aos finais (mais à direita). Na Figura 1.2 o elemento da esquerda representa um evento não determinístico selecionado pelo planejamento para compor o enredo quando não é necessário considerar a variação de propriedades contínuas. Nesse caso, o desenrolar interno do evento é abstraído, sendo necessário considerar continuações a partir de cada final. Os quadrados azuis representam estados internos do evento ‘sem propriedades’. Ainda na mesma figura, o elemento da direita representa o mesmo evento não determinístico, mas agora quando é necessário considerar a variação de propriedades dramáticas internas ao evento. Os estados internos com o número 1 apresentam um nível de tensão baixo; os estados com o número 2, nível médio; e o estado com o número 3 apresenta um nível de tensão alto. Diferentes ‘caminhos’ internos para o mesmo final geram diferentes variações da tensão da história: é possível, por exemplo, atingir qualquer um dos três finais gerando alta tensão. Se o planejamento precisa obrigar, por exemplo, que não há a possibilidade de um alto nível de tensão na história, o evento não satisfaz a restrição. Para descobrir que o evento deve ser descartado, é preciso analisá-lo internamente e considerar cada possível execução como uma 3 alternativa distinta. Duas abordagens iniciais são possíveis para resolver esse problema: primeiro, um processo de “geração e teste”. Nesse caso, o planejamento gera um capítulo normalmente – sem considerar propriedades dramáticas - e posteriormente verifica se as restrições em tempo contínuo são satisfeitas no capítulo gerado, aplicando um algoritmo como o desenvolvido por (ARAÚJO, 2011). Se sim, o processo prossegue normalmente. Se não, o capítulo é descartado e um capítulo alternativo deve ser gerado. O problema que essa abordagem apresenta é ilustrado na Figura 1.3. Figura 1.3. Abordagem de geração e teste, com etapa de verificação intercalada. Os planos desperdiçados causam a demora excessiva na geração de um capítulo, quebrando o ciclo de geração-dramatização em paralelo. Nessa figura, o processo de planejamento gera um capítulo inicial sem problemas (a verificação de restrições sobre propriedades dramáticas nesse capítulo inicial é abstraída no exemplo). Ao gerar a sequência desse “Capítulo 1”, no entanto, o planejamento enfrenta problemas: a primeira alternativa considerada não satisfaz as restrições necessárias. Uma capítulo alternativo é gerado e verificado a tempo, satisfazendo as restrições. Esse capítulo é então dramatizado como o “Capítulo 2”. A geração da sequência, no entanto, enfrenta ainda mais problemas: duas alternativas são geradas e nenhuma delas satisfaz as restrições impostas, de forma que a dramatização encerra enquanto o planejamento ainda procura uma alternativa viável de continuação. Essa quebra do ciclo é indesejada, por causar uma pausa artificial na experiência do usuário. A segunda abordagem inicial possível para resolver o problema é aplicar o planejamento no nível interno dos eventos, encadeando os estados internos como 4 alternativas. O problema dessa abordagem é que o planejamento automatizado é um processo naturalmente combinatório, e o aumento de alternativas causa um aumento exponencial do tempo necessário para a geração do enredo. A Figura 1.4 ilustra o problema. Figura 1.4. Aumento no número de alternativas a serem consideradas causando uma diferença exponencialmente maior no tempo necessário para o planejamento; e a subsequente quebra no ciclo contínuo de geração/dramatização. O exemplo recapitula o evento mostrado na Figura 1.2, onde há 3 estados finais, e 10 execuções distintas. Na Figura 1.4, é representado o aumento do número de alternativas causado quando se passa a considerar as execuções distintas como alternativas de planejamento. Se for necessário encadear seis eventos com essas características, o planejamento que não considera arcos dramáticos só precisa combinar finais, ou seja 36 possibilidade (totalizando 729). O planejamento no nível interno ao evento, no entanto, precisa considera 106, totalizando 1.000.000, possibilidades a gerar e analisar. Em uma história mais longa, composta por 10 eventos, a diferença fica ainda maior: de 310 (59.049) possibilidades, um número ainda realisticamente tratável, para 1010, um número exorbitante. Dada a inviabilidade das alternativas inicialmente consideradas, o problema de pesquisa do presente trabalho é: como prover mecanismos para a expressão e garantia de requisitos sobre propriedades dramáticas que variam continuamente ao longo de cada evento sem incorrer em custos computacionais que inviabilizem o ciclo de geração-dramatização. 5 1.3 Proposta Propõe-se um modelo para a representação de propriedades dramáticas em narrativas geradas por sistemas de Storytelling Interativo. Almeja-se que essas propriedades permitam a adequação da história às preferências do autor; ou às restrições do gênero ou, ainda, impostas pela audiência. Adota-se a representação de propriedades que variam continuamente ao longo dos eventos, já que aspectos estéticos como a intensidade da trilha sonora, emoções dos personagens, e os níveis de tensão e violência da trama são melhor representados dessa forma. Dada a necessidade de manter o processo de geração de enredos em tempo hábil, o modelo proposto define uma etapa de verificação offline para evitar carga computacional adicional nesse processo. A pré-verificação considera exaustivamente todas as possíveis restrições sobre propriedades dramáticas em relação a todos os eventos de um gênero, gerando resultados que podem ser consultados pelo planejamento em uma fração do tempo que seria necessário para realizar a verificação online. Representa-se as restrições sobre as propriedade dramáticas utilizando uma lógica temporal estendida para Storytelling (ARAÚJO e CIARLINI, 2011). Dado que a pré-verificação é realizada sem o conhecimento dos valores das propriedades – que serão conhecidos apenas durante o planejamento - utiliza-se técnicas de programação em lógica com restrições (constraint logic programming) (MARRIOT e STUCKEY, 1998) para realizar a execução abstrata dos eventos. O modelo e os algoritmos desenvolvidos são aplicados como uma extensão a um sistema de Storytelling Interativo existente. Apesar da implementação para essa incorporação, os resultados são independentes desse sistema e podem ser reutilizados tanto em outros sistemas de Storytelling como em aplicações de outros domínios nas quais condições similares se apresentem – eventos que podem ser modelados como autômatos não determinísticos e com propriedades que variam continuamente ao longo de sua execução. 1.4 Hipótese Se forem conhecidos de antemão: • A especificação dos eventos possíveis, e como esses modificam as propriedades dramáticas; e 6 • As restrições típicas do gênero, sobre as propriedades dramáticas; Então, consegue-se mapear cada par (especificação abstrata de evento, restrição dramática) às restrições que devem ser satisfeitas após o evento. 1.5 Estrutura No capítulo 2, é apresentada a fundamentação teórica do trabalho. Apresenta-se uma visão geral sobre o tema de storytelling e descreve-se as técnicas de geração de narrativa, em especial a utilização de planejamento automatizado. Explora-se ainda a questão da modelagem de arcos dramáticos e de te tempo contínuo em sistemas de Storytelling Interativo. Além de tópicos específicos sobre storytelling, aborda-se alguns dos temas relevantes para os modelos e algoritmos desenvolvidos nessa dissertação: model checking; programação em lógica com restrições; e a lógica de tempo ramificado CTL, detalhando a sua extensão para aplicação em tempo contínuo em domínios de stortelling. No Capítulo 3, apresenta-se o modelo de conteúdo, que define um gênero que contém as propriedades dramáticas, as restrições típicas sobre elas e as definições dos eventos que compõem esse gênero. Este capítulo também descreve de maneira geral o modelo proposto de verificação e consulta. O capítulo 4 apresenta a implementação dos algoritmos referentes a esse modelo de verificação e consulta, utilizando estruturas de dados que refletem o modelo de conteúdo; e contendo exemplos do processo. O capítulo 5 contém a discussão sobre os resultados obtidos, referente à expressão de propriedades dramáticas e restrições típicas; e também aos custos computacionais para a verificação e para a consulta de resultados. Por fim, o capítulo 6 contém as conclusões do trabalho, recapitulando as contribuições da dissertação. Também contém uma análise sobre os possíveis desenvolvimentos futuros do trabalho e sua aplicação em domínios diversos. 7 2 Fundamentação Teórica Neste capítulo são apresentados os tópicos relacionados à pesquisa. Explorase o tópico de Storytelling Interativo, dado o foco da solução para aplicação em sistemas nesse contexto. Além disso, são explorados assuntos referentes às principais técnicas utilizadas na modelagem e implementação dos algoritmos produzidos. 2.1 Storytelling Interativo Storytelling Interativo é na qual uma narrativa é composta e contada sob a influência da interação de um ou mais usuários. A geração e dramatização computacional de histórias interativas têm sido objeto de estudo em diversas disciplinas, com influências e inspirações advindas de áreas como a produção cinematográfica, a interação humano-computador, o design de jogos e a inteligência artificial (SPIERLING, 2005). Sistemas de Storytelling Interativo têm sido desenvolvidos para aplicação em educação, treinamento e simulação (SPIERLING et al., 2002; SILVA et al., 2011; RIEDL e STERN, 2006); e principalmente entretenimento, seja ligado ao desenvolvimento de jogos (HARTSOOK et al., 2011) ou em aplicações destinadas à televisão interativa (CAMANHO et al., 2009). De modo geral, as diversas abordagens de geração de enredo em sistemas de Storytelling Interativo podem ser classificadas em um eixo, contrapondo aquelas baseadas em personagens (character-based) àquelas baseadas na estrutura do enredo (plot-based). Em abordagens do primeiro tipo, os personagens são modelados como agentes autônomos e a história emerge da interação entre estes agentes (cooperantes ou conflitantes). Nas abordagens do segundo tipo, o foco é a estrutura da trama e o enredo é produzido pela combinação de eventos narrativos. Abordagens character-based têm como origem os jogos eletrônicos com geração de histórias emergentes (DÓRIA et al., 2008), e facilitam a interação direta. O 8 usuário pode interagir com a trama: tomando o controle de um dos personagens; restringindo e guiando as ações de múltiplos personagens; e influenciando o ambiente no qual a história se desenrola. É difícil, no entanto, garantir a coerência e interesse dramáticos da trama, pois a livre interação de agentes pode não gerar um enredo interessante. RIEDL e STERN (2006) classificam essa abordagem como “strong autonomy” (autonomia forte). Por outro lado, abordagens plot-based surgiram com base na constatação, a partir de estudos de narratologia e linguística estruturalista, de que há padrões típicos nos eventos de histórias de um mesmo gênero. Em seu trabalho seminal de 1928, Propp (PROPP, 2003) identifica, por exemplo, os eventos comuns (e a ordem típica entre esses eventos) em histórias de contos de fada. Assim, a abordagem plot-based consiste na composição de histórias através da combinação de eventos típicos; sendo chamada, na classificação de Riedl e Stern, de “strong story” (história forte), pois oferece um maior controle sobre a coerência interna da trama e facilita a geração de histórias interessantes. No entanto, essa abordagem tende a limitar as possibilidades de interação, dado que existe um número finito de eventos que podem ser combinados, e considerar os efeitos da interação do usuário pode tornar a combinação de eventos um problema muito complexo. Um exemplo de sistema de Storytelling Interativo prominente na literatura é o sistema Façade, que aplica técnicas de Inteligência Artificial (em uma abordagem mista, com elementos de plot e character-based) para “responder às influências do usuário dadas interações em tempo de execução”, na “construção de uma performance dramática”(MATEAS e STERN, 2005). Outro sistema que aplica uma abordagem mista é o IN-TALE, utilizado para simulação e treinamento (RIEDL e STERN, 2006). O sistema FatiMA é categorizado como character-based. Esse sistema aplica uma abordagem de ‘composição e teste’; através de ‘ensaios’, onde o usuário define uma cena a ser dramatizada (utilizando um módulo de composição apropriado) e ‘dirige’ o comportamento dos personagens-agentes, justificando as decisões tomadas por eles. Dessa forma, o sistema pode usar essas decisões e justificativas como refêrencias futuras; e com elas guiar o comportamento dos personagens-agentes em execuções futuras (KRIEGEL et al.). Como exemplo de sistema plot-based, há o DINAH. Nesse sistema, o autor preenche uma base de dados com muitas partes básicas de narrativa (story clips); que 9 são então compostas, em tempo de execução, em uma narrativa completa por algoritmo combinatório que leva em conta restrições de combinações entre esses story clips (VENTURA e BROGAN, 2002). Outros exemplos de sistemas de Storytelling Interativo, com aplicações em áreas diversas, podem ser encontrados na literatura. ROBERTS e ISBELL (2008) realizaram um survey, classificando sistemas de sistemas de Storytelling Interativo (e drama managers) de acordo com as técnicas utilizadas, abordagem e métricas de qualidade de experiência do usuário. MAGERKO (2007) também categoriza e compara sistemas de narração interativa segundos suas capacidades como geradores, gerenciadores e dramatizadores de histórias. URSU et al. (2008) analisam sistema de Storytelling Interativo especificamente em relação à narratividade em televisão interativa, constrastando sistemas que geram narrativas baseadas em interação (foco em emergência, equivalente à “strong autonomy”) àqueles que focam na exploração de uma história através de interação mediada (foco em controle, equivalente a “strong story”). Em suas conclusões, argumentam que sistemas do segundo tipo são mais apropriadas para o paradigma de narrativas em TV interativa, e que experiências adquiridas na construção de sistemas de Storytelling Interativo gerativos não são diretamente aplicáveis em implementações nesse paradigma. 2.1.1 Planejamento em Storytelling Uma das técnicas comumente utilizadas por sistemas de Storytelling Interativo para a geração de enredos é o planejamento automatizado (SILVA et al., 2010; RIEDL e YOUNG, 2004; PORTEOUS e CAVAZZA, 2009), tanto em abordagens character based como plot based (CHARLES et al., 2003). O planejamento automatizado trata do chamado planning problem, ou problema de planejamento: encontrar uma sequência de ações para atingir um objetivo a partir de um estado inicial definido. Dado um domínio de planejamento definido por uma linguagem L e uma coleção O de operadores, o planning problem P é declarado na forma P = (Σ,s0,Sg), onde: • s0 é o estado inicial; • Sg é o conjunto (não-vazio) de estados objetivo ; • Σ é um sistema de transição de estados na forma (S,A,γ): o S define o conjunto de estados possíveis; 10 o A é o conjunto de ações aplicáveis (de instanciação dos operadores em O); o γ é a função de transição parcial que mapeia ações e estados a estados, na forma s’= γ (a,s) onde a ϵ A, e s,s’ ϵ S. Uma solução para o problema de planejamento é dada como uma sequência de ações (a0, a1, ..., an ); que gera a sequencia de estados (s0, s1, ..., sn+1) quando ai é aplicada em si, gerando si+1. O último estado, sn+1, é o estado objetivo (i.e. , sn+1ϵ Sg). No caso de abordagens character based, o planejamento pode ser utilizado para dirigir personagens (no sentido teatral), ou seja: guiar seu comportamento (PIZZI, 2011). Um exemplo é o Façade (MATEAS e STERN, 2005), que utiliza a linguagem de planejamento reativo ABL para controlar agentes autônomos emotivos. O sistema INTALE também utiliza a linguagem ABL para gerar o comportamento de personagens com objetivos individuais (RIEDL e STERN, 2006). No caso de abordagens plot based, explora-se a semelhança natural entre um enredo e um plano (PORTEOUS e CAVAZZA, 2009) para compor enredos como sequências de eventos narrativos. Além disso, técnicas de planejamento podem ser utilizadas para coordenar a interação do usuário com agentes virtuais (GILROY, 2012). Diversas técnicas de planejamento são utilizadas em sistemas de Storytelling Interativo para esses fins: planejamento de ordem parcial (RIEDL e YOUNG, 2004; AYLETT et al., 2006), planejamento por heurística de busca (PIZZI et al, 2006), e planejamento em rede hierárquica de tarefas (HTN) (SILVA et al, 2010). A aplicação de planejamento não determinístico para gerar maior variabilidade em abordagens plot based é proposta por (SILVA, 2010); possibilitando ainda o tratamento de tentativas fracassadas gerando maior qualidade dramática. Planejamento temporal tem sido recentemetne explorado nessa área para o controle da experiência e interação do usuário (BENFORD e GIANNACHI, 2008), e para promover a sincronização de ações de agentes virtuais (PORTEOUS et al., 2011). O presente trabalhalho relaciona-se à aplicação de planejamento automatizado em sistemas de Storytelling Interativo, pois busca permitir que uma tal aplicação possa considerar informação temporal contínua sem prejuízo computacional. No entanto, os algoritmos desenvolvidos para a pré-verificação de fórmulas não aplicam técnicas deste tipo. 11 2.1.2 Arcos dramáticos Aspectos estéticos podem ser impostos em uma narrativa pelo autor ou pelo gênero. Contos de fada, por exemplo, normalmente exigem um final feliz; enquanto histórias de aventura impõem que o nível de tensão deve atingir seu nível mais alto imediatamente antes da resolução da trama. Esse conceito, a variação do impacto emocional da estrutura da história sobre a audiência, é chamado de arco dramático e tem origem em Aristóteles (BUTCHER, 2011), sendo objeto de estudo até a época contemporânea na área da Narratologia (BRANIGAN, 1992). Em relação a sistemas de Storytelling Interativo, o tratamento de arcos dramáticos é de especial interesse para garantir a qualidade da narrativa, que por sua vez é crucial para garantir uma boa experiência do usuário. É de importância, nesse sentido, a distinção de E.M. Foster (apontada por (BRANIGAN, 1992)): embora “O rei morreu e então a rainha morreu” e “Mary comeu uma maçã” não se qualifiquem como narrativas; as versões alternativas “O rei morreu e então a rainha morreu de tristeza” e “Shirley era boa e então foi levada a uma vida de crime” o fazem. Não há narrativa sem complicações e resoluções, e essas são melhor modeladas como mudanças contínuas, e não abruptas, ao longo da história. Há diversas maneiras possiveis de representar e controlar arcos dramáticos em sistemas de Storytelling Interativo. A produção de suspense, por exemplo, tem sido objeto de estudo nas abordagens de (CHEONG, 2007) e (O’NEIL e RIEDL, 2011). BARROS e MUSSE (2008) aplicam técnicas de planejamento com resolução de conflitos para gerar narrativas que se adequam a um arco dramático - desenhado por um autor como uma função em valor do tempo de dramatização – que representa o conhecimento do protagonista em relação a um mistério estabelecido. A abordagem de WARE e YOUNG (2010) é formalizar a variação, baseada em conceitos de narratologia, dos níveis de conflito (tensão) entre os personagens da história. Já Zagalo et al. (2004) exploram a modelagem de “áreas” de emoção e suspense no enredo. A relação entre essas áreas é controlada para gerar interesses no usuário (curiosidade, surpresa e suspense, na terminologia dos autores. Também em relação a arcos dramáticos considerando emoções, ARAÚJO e CIARLINI (2011) modelam a variação das ‘emoções básicas’, segundo o modelo de PLUTCHIK (1962), ao longo de eventos. 12 2.1.3 Tempo contínuo em Storytelling Tempo é um elemento básico de histórias. Como afirma GERVAS (2009), o tipo mais elementar de história envolve uma série de eventos contados em ordem cronológica; enquanto histórias complexas formam “uma nuvem de eventos tomando parte em um contínuo de tempo e espaço”. Embora sistemas de Storytelling Interativo com enredos gerados como sequências de eventos sejam capazes de apresentar diversidade e despertar interesse, há algums problemas relacionados à essa representação implícita do tempo. Primeiramente, como apontam PORTEOUS et al. (2011), a história (os acontecimentos no mundo da narrativa) e o discurso (a representação desses acontecimentos) não compartilham princípios dramáticos. O tempo explícito que o processo de geração de enredos desconsidera é necessário para a dramatização em tempo real: é preciso posicionar atores, controlar diálogos, enquadramento da câmera, intensidade da trilha sonora, entre outros aspectos que dependem de uma representação explícita de tempo ao longo dos eventos. PORTEOUS et al. (2011) defendem que a aplicação de técnicas de tratamento de tempo contínuo podem conferir maior poder de expressão a sistemas de Storytelling Interativo. Assim, propõem o uso de planejamento temporal para considerar tempo contínuo; buscando tanto coordenar aspectos de dramatização como aumentar o poder gerativo do sistema. Além de PORTEOUS et al., ARAÚJO (2011) também propõe que o tratamento de tempo contínuo no nível da geração do enredo provê maior coerência entre a geração e dramatização da história. A coordenação de aspectos visuais e de agentes virtuais, por exemplo, pode ser então realizada com base em informação presente na história que foi planejada. Outro problema do tratamento implícito do tempo é a dificuldade de representação de arcos dramáticos. Embora possam ser representados por valores discretos associados aos eventos, descritos no próprio formalismo do planejamento, há certas propriedades melhor representadas por variação contínua ao longo da dramatização, como os níveis de suspense, as emoções dos personagens, os níveis de violência; entre outros. 13 2.1.4 Logtell O sistema Logtell é um sistema de geração semi-automatizada de histórias com dramatização em ambiente virtual tridimensional, fruto de um projeto de pesquisa com foco na produção de conteúdo para o sistema de televisão digital brasileiro (CIARLINI et al., 2010). Com a característica de conciliar um alto nível de interatividade com coerência lógica e variabilidade das histórias geradas (CAMANHO, 2009), o Logtell atua com base em uma formalização lógica de contexto para planejar as possíveis conseqüências e desenrolares da história (CIARLINI et al., 2008). No Logtell, as histórias são dividas em capítulos. Como o sistema busca atender requisitos do ambiente de televisão interativa, adota-se um processo de geração de enredo em ciclo contínuo de paralelismo com a dramatização; de forma a não gerar pausas artificiais na experiência dos usuários. Assim, enquanto um capítulo é dramatizado, o processo de geração de enredos gera as alternativas de continuação possíveis considerando as influências oriundas da interação dos usuários com o capítulo que está sendo dramatizado. O modelo de conteúdo proposto nesta dissertação é uma extensão compatível com o utilizado pela versão atual do Logtell (CAMANHO et al., 2009), considerando ainda a adoção de técnicas para o tratamento de eventos não determinísticos (SILVA, 2011). O modelo de conteúdo proposto permite a expressão da variação de propriedades dramáticas ao longo dos eventos; e de restrições sobre essa variação, baseando-se na lógica temporal CTL-estendida definida por ARAUJO (2011), descrita na seção 2.4.1. O modelo de conteúdo proposto nesta dissertação é descrito no capítulo 3. 2.2 Verificação de Proriedades Dado o objetivo de representar arcos dramáticos em histórias geradas por sistemas de Storytelling Interativo, é necessário considerar a variação de propriedades continuamente ao longo do tempo. Nesta seção, trata-se dos tópicos relacionados à verificação de propriedades, com paralelos entre as técnicas descritas e sua utilização em sistemas de Storytelling Interativo. O modelo proposto opera verificando a satisfação de restrições sobre um evento modelado como um autômato não determinístico. Dessa forma, o presente trabalho relaciona-se intimamente ao tema de verificação de modelos em sistemas formais. Além disso, como o processo é offline, e opera sem o conhecimento dos valores concretos das 14 propriedades, é necessário que a verificação seja abstrata. Assim, o trabalho também se relaciona com técnicas de execução simbólica. 2.2.1 Model checking Verificação de modelos (model checking) é uma técnica utilizada para determinar se uma propriedade existe em um sistema especificado formalmente como um sistema de transições – em geral, como um autômato finito ou uma estrutura de Kripke (MCMILLIAN, 1993). As propriedades a serem verificadas sobre esse sistema são expressas em lógica temporal, ou seja, em um formalismo que permite raciocinar sobre a ordem dos eventos no tempo. Tradicionalmente, admite-se que uma lógica temporal é uma extensão da lógica proposicional, com operadores que se referem ao comportamento de um sistema ao longo do tempo. Isso deve-se ao fato de que, para que a verificação possa ser rigorosa, propriedades do sistema (e restrições sobre essas propriedades) devem ser expressas de forma precisa e não ambígua (CHRISTEL e KATOEN, 2008). Algoritmos de model checking exploram o espaço de estados determinado pela especificação do sistema para determinar se ele satisfaz requisitos e obedece às restrições lógicas. A exploração é sistemática e completa, no sentido de que todas as possibilidades de desenvolvimento do sistema são consideradas. Um dos problemas principais enfrentados por essas técnicas é a explosão do espaço de estados, o chamado state-space explosion problem: “O tamanho da representação de sistemas de transição cresce exponencialmente em vários compoentes, tais como o número de variáveis no grafo de um programa ou o número de componentes em um sistema concorrente. Esse problema é conhecido com o problema da explosão do espaço de estados” (CHRISTEL e KATOEN, 2008, p.80, em tradução livre). Apesar dos problemas relacionados à essa alta complexidade computacioanl, model checking é uma técnica amplamente utilizada em diversos domínios. Além de aplicações relacionadas ao planejamento automatizado, especialmente em domínios parcialmente observáveis (DÓRIA et al., 2008), model checking é muito utilizado para a verificação de propriedades em software (verificação formal) e hardware (simulação simbólica), com diversas heurísticas especializadas para esses domínios, evitando problemas de explosão combinatorial no espaço de estados. A aplicação de lógicas temporais como um formalismo para descrever o 15 comportamento de sistemas é considerada um dos fatores mais importantes para o sucesso de algoritmos de model checking (GRUMBER e VEITH, 2006). As propriedades da lógica temporal aplicada determinam os tipos de propriedades temporais que podem ser garantidas pelos algoritmos de verificação. Destacam-se, na literatura, o Mu-calculus, uma classe de lógicas proposicionais baseadas em operadores de ponto-fixo (KOZEN, 1983); as lógicas de tempo ramificado; e as lógicas temporais lineares. Assim como lógicas de tempo ramificado podem ser consideradas extensões de lógicas temporais lineares; o Mu-calculus é uma extensão das lógicas de tempo ramificado. Abordagens primordiais de model checking consideravam apenas sistemas de transição discretos – isto é, com um número contável de estados. Mais recentemente, foram desenvolvidas diversas aplicações de model checking sobre sistemas híbridos, com característidas tanto discretas como contínuas. Um dos principais sistemas de verificação de modelos sobre autômatos híbridos destacados na literatura é o HyTech (ALUR et al., 1993). Aplicações de algoritmos de model checking em SI são raras. DÓRIA et al. (2008) utilizam planejamento baseado em verificação de modelos para a geração de políticas de dramatização para eventos modelados como autômatos não determinísticos. Já (ARAÚJO, 2011) apresenta um algoritmo de verificação de propriedades contínuas sobre eventos modelados como autômatos híbridos. Na secao 2.2.2, descreve-se sistemas de transição de estados utilizados por sistemas de model checking; em especial os automatos híbridos não determinísticos utilizados por ARAÚJO (2011), dada a sua semelhança ao modelo proposto. Na seção 2.2.3, descreve-se o conceito de execução simbólica, relacionado ao trabalho de verificação abstrata de propriedades contínuas realizado no presente trabalho. Não são discutidas em detalhe lógicas temporais aplicadas em algoritmos de model checking, que são profusamente detalhadas na biblografia (BOUYER, 2009). A seção 2.4, no entanto, descreve a lógica de tempo ramificado CTL e sua extensão, proposta por ARAÚJO (2011) para aplicação no domínio de storytelling interativo; já que esta é utilizada no modelo proposto. 2.2.2 Sistemas de transição de estados Sistemas de transição de estados são utilizados para modelar formalmente o 16 funcionamento de sistemas reais. O comportamento e as características de um sistema são implicitamente definidos a partir do conjunto de estados atingíveis pelas transições determinadas. Um estado, nessa concepção, descreve quais são as propriedades do sistema em um determinado instante de seu comportamento (MCMILLAN, 1993); e uma transição leva o sistema de um estado a outro. Há duas maneiras principais de representar um sistema desta maneira, para facilitar a representação: abstraindo-se os estados (foco em transições); ou abstraindo-se as transições (foco nos estados). Esses modos de representação são, em geral, diretamente intercambiáveis. Há abordagens de representação mista apropriadas para domínios específicos, embora estas adicionem complexidade extra na descrição do sistema (SCHOREN, 2011). O modelo mais utilizado para abordagens baseadas em estados (“labeled states”) é o de estruturas de Kripke. Já para abordagens baseadas em transições, o modelo mais utilizado é o LTS (Labeled Transition Systems). Aqui, apresenta-se o formalismo que define sistemas de transição de estados com labeled transitions. Um sistema de transição de estados TS é definido pela tupla (S, Act, T, s0,F, AP, L), na qual: • S é um conjunto de estados; • I é um conjunto de estados iniciais, subconjunto de S; • Act é um conjunto de ações; • T é uma função parcial que mapeia estados e ações a conjuntos de estados: S × AP → 2S; • s0 é o estado inicial, um elemento de S; • F é um conjunto de estados finais, subconjunto de S; • AP é um conjunto de proposições atômicas, e ; • L : S → 2AP é a labeling function; que relaciona a cada estado s todas as proposições atômicas p ∈ AP que são satisfeitas naquele estado. Semanticamente, o sistema parte de um estado s0 ∈ I e se desenvolve de acordo com a função de transições T. A partir de cada estado atual s, uma das transições que parte de s e leva a s’ é selecionada não deterministicamente dentre os elementos de T(s). Isto equivale a uma ação a ∈ Act ter sido executada no estado s, levando o estado do sistema a tornar-se s’. As sequências de ações consideradas válidas são apenas aquelas que terminam em um dos estados de F. Os sistemas de transição correspondem a autômatos determinísticos, onde a 17 função de transição T leva cada par <estado,ação> a no máximo um estado, ou não determinísticos que não têm esta limitação. Neste trabalho, utiliza-se autômatos não determinísticos e assume-se ainda que nenhuma transição parte de um estado final. Além disso, o modelo proposto nesta dissertação considera a variação contínua de propriedades ao longo da execução dos eventos, o que torna o sistema híbrido - isto é, com a representação de comportamento tanto discreto como contínuo. Um meio de representação de sistemas híbridos difundido na literatura são os autômatos híbridos. O modelo apresentado aqui, no entanto, adota uma representação particular descrita no capítulo 3. 2.2.3 Execução Simbólica O termo execução simbólica refere-se principalmente à verificação de programas (KING, 1976); um tipo específico de verificação de modelos no qual um artefato de software é analisado em busca de informações sobre suas condições, limites e possíveis problemas de execução. Este conceito relaciona-se intimamente à simulação simbólica; que refere-se à verificação de propriedades em hardware e sistemas concretos. No que diz respeito ao presente trabalho, a característica de algoritmos de execução simbólica de principal interesse é a consideração abstrata dos dados de entrada; já que o modelo proposto assume que é necessário verificar as fórmulas temporais que descrevem os arcos dramáticos em tempo offline. Portanto, os valores concretos das propriedades dramáticas – que variam continuamente ao longo dos eventos – são desconhecidos em tempo de verificação. Em seu artigo seminal, KING (1976) define os conceitos de teste, prova formal e execução simbólica de um programa. Define o teste de um programa como uma sequência de inputs concretos e a verificação dos resultados. Portanto, embora o sucesso no teste de um programa garanta que ele opera corretamente em relação aos dados exemplares fornecidos como input, ele não não garante a corretude em relação aos demais possíveis valores para os dados de entrada. Define, no outro extremo do espectro, a prova formal. A prova de um programa provê informação sobre todos os possíveis dados de entrada, mas depende de uma especificação detalhada (e completamente correta) do comportamento do programa; além de ser necessário construir a prova lógica de que o programa e suas especificações são consistentes. KING (1976) nota que a confiança neste método “depende do cuidado 18 empregado na criação da especificação e na construção dos passos da prova”; e que é ainda “necessário considerar questões práticas, dependentes de máquina, como overflow, representação numérica, etc.”. Por fim, define a execução simbólica de um programa como o meio termo aplicável entre essas duas abordagens extremas. Ao invés de executar o programa em relação a um conjunto de dados de entrada; ou realizar o trabalho de prova formal de funcionamento; executa-se simbolicamente o programa. Ou seja, o programa é executado em relação a conjuntos de classes de dados de entrada. Embora essa abordagem seja particularmente aplicável a domínios discretos devido ao problema de explosão do espaço de estados; há, na literatura, diversas aplicações e heurísticas para a sua aplicação em domínios contínuos. No entanto, mesmo técnicas mais radicais e especializadas a domínios específicos não proprocionam escalabilidade suficiente para o tratamento de valores contínuos a partir de certa escala de dados (EMERSON, 2009). Neste trabalho, explora-se a execução simbólica considerando a dramatização de eventos não determinísticos em storytelling interativo como um ‘programa’; buscando gerar todos os possíveis ‘casos de teste’. Busca-se especialmente aproveitar a nãoexploração de caminhos inviáveis no espaço de estados; e evitar caminhos infinitos gerados por ciclos de execução, utilizando conhecimento específico do domínio. No modelo proposto, utiliza-se técnicas de programação em lógica com restrições (constraint logic programming) para realizar uma execução simbólica de cada evento na qual todos os possíveis valores de entrada para as propriedades dramáticas são classificados em relação à fórmula residual que geram para cada estado final do evento. A seção 2.3 trata do tópico de constraint logic programming em detalhe. A solução proposta é inovadora na aplicação de técnicas de verificação abstrata no domínio de storytelling interativo; não constando na biblografia especializada outras iniciativas similares. 2.3 Contraint Logic Programming Constraint programming é o nome dado ao conjunto de técnicas utilizadas para raciocinar programaticamente sobre relações entre entidades. Ao contrário do paradigma de programação imperativo, no qual é necessário tornar as relações entre objetos explícitas, linguagens de contraint programming permitem que o programador 19 declare relações entre objetos. A linguagem então se encarrega de garantir que as relações definidas (as constraints) são mantidas ao longo do processamento (MARRIOT e STUCKEY, 1998). Estas linguagens implementam a solução do problema de satisfação de constraints (constraint solving problem). Esse problema é definido como consistindo de um conjunto de variáveis; um domínio não-vazio para cada um das variáveis; e um conjunto de constraints restringindo os valores possíveis dessas variáveis, considerando dependências de uma variável em relação a outras (YUAN et al., 1999). A satisfação de constraints é o processo de encontrar uma atribuição para todas as variáveis que simultaneamente satisfaz todas as constraints; ou determinar que tal atribuição é impossível. Diversas linguagem de programação implementam esta técnica; algumas especilizadas em relação ao domínio das variáveis consideradas. Nesta dissertação, foca-se no formalismo CLP (constraint logic programming), que combina as características de constraint solving com programação lógica. Ferramentas de CLP são apropriadas para o tratamento de constraints de diversos tipos, incluindo restrições lineares, não-lineares; de lógica temporal; em domínios reais, finitos e booleanos. A aplicação de ferramentas de CLP provê diversas vantagens. Uma delas é a facilidade da representação de certas regularidades e dependências do mundo real como restrições computacionais. No planejamento de sistemas elétricos, por exemplo, é muito mais natural determinar que ‘a resistência em um circuito obedece à lei de Ohm (R = V/I : a resistência R é igual ao potencial V divido pela intensidade da corrente I )’ do que explicitar essa relação para cada objeto, em relação a valores concretos de potencial e intensidada da corrente elétrica. É graças à facilidade na representação de restrições como essa que técnicas de CLP são aplicadas em problemas de diversas áreas do conhecimento. Discute-se, no entanto, a idéia de que a aplicação mais importante de CLP é em problemas combinatórios; pois esses problemas são difícies de ser modelados de outra forma, e apresentam um espaço de busca exponencial. Nesse caso, a aplicação de CLP pode podar o espaço de busca, tornando mais viável encontrar soluções em tempo aceitável. Nesta dissertação, aplica-se técnicas de CLP em um domínio de números reais. Limita-se a variação das propriedades tratadas à expressões lineares dado que implementações de CLP (que estendem linguagens de programação em lógica) são 20 incapazes de lidar com expressões de mais alta ordem em tempo razoável; e por considerarmos que esse tipo de variação provê poder expressivo suficiente para a aplicação no contexto de storytelling interativo. Há muitas aplicações de técnicas de CLP em relação a lógicas temporais, incluindo CTL, bem como na verificação de propriedades em autômatos e sistemas híbridos. Em relação a storytelling interativo, no entanto, apenas ARAÚJO (2011) aplica técnicas de CLP para a verificação de propriedades temporais em histórias. Nossa aplicação difere-se da de ARAÚJO (2011) pois, segundo nosso modelo proposto, a verificação de propriedades utilizando CLP é realizada em tempo offline de planejamento; sem os valores das variáveis e, portanto, de forma abstrata – considerando todos os possíveis valores de entrada em paralelo. Mais detalhes sobre o processo de verificação e o modelo proposto são dados no capítulo 3. 2.4 CTL A representação do tempo é um fator crucial em diversos campos do conhecimento, das ciências naturais à ciência da computação, retórica, lógica, ética até a literatura (ØHRSTRØM e HASLE, 1995). A representação formal do tempo, como uma abstração matemática e lógica, é muito necessária, em especial, em aplicações computacionais que consideram a passagem do tempo. Algoritmos de model checking (seção 2.2.1) e execução simbólica utilizam-se de formalizações lógicas do tempo que, tradicionalmente, são extensões da lógica de primeira ordem. Uma destas formalizações é computation tree logic (CTL); uma lógica temporal proposta por (CLARKE e EMERSON, 1981) para a representação e raciocínio sobre propriedades em sistemas computacionais em tempo ramificado. Isto é, a lógica CTL permite expressar fatos sobre a evolução de um sistema no tempo, considerando diversas ‘linhas do tempo’ como possibilidades de desdobramento (EMERSON, 1995). Essa lógica permite expressar, por exemplo, que uma certa propriedade não é válida no presente, mas que pode se tornar válida no futuro; ou ainda, que uma certa propriedade é válida no presente e sempre será no futuro. A lógica CTL estende a lógica proposicional com operadores de quantificação de caminho e de estado (CLARKE e EMERSON, 1986) e tem sua semântica definida em relação a um sistema de transição de estados – i.e. considera um tempo discretizado, no qual seus operadores temporais discorrem sobre ‘estados futuros’ do sistema (e não instantes absolutos de tempo). No 21 presente trabalho, utiliza-se uma extenção da lógica CTL para a aplicação no domínio de storytelling interativo. Essa lógica CTL-estendida considera a variação de propriedades em tempo contínuo, e é definida na seção a seguir. 2.4.1 CTL-estendida Conforme descrito anteriormente, CTL é uma lógica temporal que permite raciocinar sobre a ordem dos eventos no tempo; e considera diferentes desenrolares de um sistema a partir de um certo estado. No entanto, como visto, na definição da lógica CTL o tempo é considerado apenas em relação ao estados, implicitamente – não há valoração explícita do tempo. Para a aplicação de técnicas de verificação de modelos (especificamente, de execução simbólica) no domínio de storytelling interativo, é interessante tratar de tempo contínuo. Para tanto, ARAÚJO (2011) define uma extensão da lógica CTL para o tratamento de tempo contínuo ramificado, na qual uma fórmula bem formada é definida recursivamente pela seguinte gramática (adaptada de (ARAÚJO, 2011)): α ,β → aritm_expr | AF α | AG α | EF α | EG α | A α U β E α U | A end α | E end α |α ∧β |α ∨ β |α →β |¬α | true | false Na qual aritm_expr é uma expressão aritmética (uma equação ou inequação) na qual os termos são propriedades que variam ao longo da história ou valores numéricos; α e β são fórmulas bem formadas; e a semântica dos conectivos lógicos ∧, ∨, ¬, e → é definida da maneira usual. Fórmulas na lógica CTL-estendida aplicam quantificadores de caminho (A e E) combinados com operadores de estado (F, G, U, e end) aos pares, segundo a seguinte semântica, equivalente à da lógica CTL: • Quantificador de camminho A significa todos os caminhos futuros; • Quantificador de caminho E significa pelo menos um caminho futuro; • Operador de estado F significa válido em um instante futuro; • Operador de estado G significa válido em todos os instantes futuros; • Operador de estado U significa que um fato antecessor é válido até que seja válido um fato sucessor. • Operador de estado end significa válido no último instante. Nota-se, no entanto, que na lógica CTL-estendida os operadores de estado referem-se a instantes de tempo, já que a lógica trata de tempo contínuo, e não apenas 22 estados futuros de um sistema de transição de estados. Além disso, a lógica CTL-estendida não possui o operador X, que na lógica CTL define válido no próximo estado. Isto deve-se ao fato de, no tratamento de tempo contínuo, não é possível falar de um ‘próximo estado’, já que o número de instantes em qualquer intervalo é infinito. Por fim, a lógica CTL-estendida possui ainda o operador de estado end, que inexiste na lógica CTL. Isto deve-se ao fato de que, no domínio de storytelling interativo, trata-se de um tempo com final (o final da história ou capítulo). Portanto, é necessário um operador para descrever este momento específico. É típico de histórias possuir características definidas pelo seu final (p.ex. ‘todos os contos de fadas têm final feliz’). 23 3 Modelo Neste capítulo é apresentado o modelo de conteúdo proposto. Este modelo considera a existência de dados relativos ao nível de planejamento (geração dos enredos), interação e dramatização (representação da história); baseando-se num formalismo já aplicado em um sistema de Storytelling Interativo. O foco deste trabalho, no que diz respeito ao modelo de conteúdo, é a representação das propriedades dramáticas e das restrições sobre elas a serem verificadas nos eventos. Além do modelo de conteúdo, este capítulo descreve o modelo proposto de verificação das restrições sobre propriedades dramáticas. A consulta de resultados pelo planejamento também é abordada. Os algoritmos referentes à etapa de verificação e à consulta utilizam estruturas de dados que refletem o modelo de conteúdo e são descritos em detalhe no próximo capítulo. 3.1 Modelo de conteúdo O modelo proposto assume a aplicação num sistema de Storytelling Interativo independente de contexto, i.e., capaz de gerar enredos pertencentes a múltiplos gêneros dramáticos. Para tanto, baseamo-nos no formalismo desenvolvido por (CIARLINI et al., 2010), aplicado ao sistema Logtell (seção 2.1.4). Neste formalismo, um gênero é um repertório de enredos possíveis – sua definição permite gerar todos os enredos daquele gênero, bem como identificar se um enredo em particular pertence a ele. 24 Figura 3.1. Modelo de conteúdo representando os conjuntos de Eventos, de Fórmulas típicas e Propriedades dramáticas em cada instância de Gênero. Para a representação de propriedades dramáticas, o modelo é definido da seguinte forma, conforme ilustrado na Figura 3.1. Cada instância de gênero encerra um conjunto de Eventos diretamente dramatizáveis; um conjunto de Fórmulas típicas, representando restrições sobre propriedades dramáticas (na lógica temporal CTLestendida descrita na seção 2.4.1); e o conjunto de Propriedades dramáticas que os eventos desse gênero consideram (sobre as quais as fórmulas típicas versam). As seções seguintes descrevem em detalhes cada um destes conjuntos. 3.1.1 Propriedades dramáticas As propriedades dramáticas representam atributos estéticos relevantes para as histórias pertencentes ao gênero. A variação contínua dessas propriedades provê informação para que a dramatização expresse esses aspectos com maior fidelidade. O processo de composição de enredos leva em consideração restrições sobre essas propriedades para gerar apenas histórias que satisfaçam os desejos do autor, as necessidades e preferências da audiência, ou requisitos próprios do gênero. O processo de verificação desenvolvido nesta dissertação não é dependente do domínio ao qual as propriedades contínuas pertencem. Diversos aspectos estéticos relevantes para o storytelling interativo podem ser representados. ARAÚJO (2011) utiliza o modelo descrito em (RODRIGUES, 2008), baseado em (PLUTCHIK, 1962), para representar as emoções evocadas ao longo da história. No exemplo da Figura 3.1, 25 utiliza-se essa representação para definir Joy e Fear como os níveis de felicidade e temor, respectivamente, despertados pela narrativa. Nesse modelo, as propriedades assumem valores não-negativos com valor inicial (no começo do primeiro evento) atribuído pelo gênero. Além da representação de atributos da narrativa, seria possível modelar e representar as emoções pessoais dos personagens ao longo dos eventos; ou ainda atributos práticos como a intensidade desejada da trilha sonora, atributos de iluminação das cenas, etc. Nesta dissertação não avalia-se qualitativamente os possíveis modelos e domínios das propriedades dramáticas. Assume-se apenas que representam qualidades estéticas da narrativa sobre as quais certas restrições devem ser obrigadas. 3.1.2 Fórmulas típicas em CTL-estendida Representa-se as restrições sobre as propriedades dramáticas através de fórmulas na lógica CTL-estendida apresentada na seção 2.4.1. Assim como em relação às propriedades dramáticas, também não avalia-se as restrições típicas sob a ótica da narratologia ou cinematografia. Assume-se apenas que restrições sobre as propriedades dramáticas existem como definição prévia, para que seja possível realizar a préverificação. Na lógica CTL-estendida as fórmulas representam algo que deve valer a partir do momento em que a fórmula é afirmada. As fórmulas que pertencem ao conjunto de fórmulas típicas de um gênero não representam restrições que devem valer apenas a partir do ponto inicial da história; mas sim todas as restrições que podem ser estabelecidas para valer em uma parte da história – tipicamente, um capítulo. 3.1.3 Eventos No formalismo original no qual o modelo proposto é baseado, os eventos são descritos como operadores parametrizáveis de planejamento, com uma assinatura única. Baseando-se em (DÓRIA et al., 2008), adota-se a representação dos eventos dramatizáveis como autômatos não-determinísticos. Não é adotado, porém, o controle do tempo de dramatização a partir de políticas pré-geradas por um processo de model checking. No modelo proposto, o autor define o tempo máximo e mínimo de dramatização; e as transições entre os estados internos de um evento são compostas por micro-ações diretamente dramatizáveis e com tempo definido; condicionadas por 26 restrições sobre propriedades de contexto. Propriedades de contexto são referentes ao nível do operador de planejamento, e as restrições sobre elas são dadas como expressões lógicas. A Figura 3.2 mostra a modelagem do evento dado pelo operador try_to_kidnap(VILLAIN,VICTIM), que descreve o evento no qual há a tentativa de rapto de uma vítima por um vilão. Figura 3.2. Autômato não determinístico associado ao evento Try to Kidnap. A Figura 3.2 mostra um exemplo simples de um autômato representando o evento Try to Kidnap. Cabe notar que o nível de detalhe e sofisticação dos autômatos em uma aplicação real pode ser muito maior, dependendo apenas do esforço autoral. Para o fim de demonstrar os algoritmos desenvolvidos nesse trabalho, a simplicidade do exemplo apresentado é suficiente. No autômato da Figura 3.2: • O estado inicial s0 representa Vilão espreitando a vítima; • Os estados finais s1 e s2 representam, respectivamente, Vilão foragido e Vítima raptada; • Os hexágonos representam as micro-ações que compõem as transições: o A transição que leva de s0 para s0 representa o vilão ficando à espreita. A condição a é true, representando que não há restrição para que a transição aconteça. É composta pelas micro-ações: Esperar, com duração de dramatização definida em 2 segundos; e Observar, 4 segundos. o A transição que leva de s0 para s1 representa o vilão atacando a vítima, mas fugindo sem sucesso. Ambas as condições b e b1 27 também são true. A condição b2 é dada pela expressão lógica “at(VICTIM,VICTIM_PLACE), protection(VICTIM_PLACE,PROTLVL), PROTLVL > 50”, que determina que essa transição só pode acontecer caso haja algum tipo de proteção da vítima no local. Composta pelas micro-ações: Ir, 1 segundo; Esperar, 2 segundos; e Ir, 1 segundo. o A transição que leva de s0 para s2 representa o vilão atacando a vítima e tendo sucesso no rapto. Composta pelas micro-ações: Ir, 1 segundo; Esperar, 2 segundos; Bater, 4 segundos; e Pegar, 2 segundos. A variação das propriedades dramáticas ao longo do evento é representada nos estados. A cada estado, é associada uma expressão linear sobre os valores das propriedades no estado inicial para cada propriedade. A Figura 3.3 mostra a variação das propridades dramáticas no mesmo autômato do evento Try to Kidnap. Limita-se a variação de propriedades dramáticas a expressões lineares para evitar os custos computacionais excessivos no algoritmo de verificação, que aplicam técnicas de programação em lógica com restrições que não lidam com expressões de mais alta ordem em tempo razoável (MARRIOT e STUCKEY, 1998). 28 S2 S0 S1 Figura 3.3. Variação linear das propriedades dramáticas associada aos estados do autômato Try to Kidnap. No autômato representado na Figura 3.3 a variável X representa a propriedade dramática fear e Y representa a propriedade joy. Os valores de joy nos estados s0, s1 e s2, portanto, são representados respectivamente por X0, X1 e X2. De forma similar, os valores da propriedade fear são dados por Y0, Y1 e Y2. No estado inicial, os valores são os próprios iniciais. No estado s2 – quando o vilão tem sucesso e rapta a vítima – a propriedade fear aumenta, significando que aumenta o nível de medo na história. A propriedade joy, nesse estado, sofre um decréscimo, representando que a felicidade diminuiu. Já no estado s1 – quando o vilão falha e é obrigado a fugir, deixando a vítima em segurança – o medo da história aumenta marginalmente devido à tentativa de rapto. Nota-se que os valores das propriedades em um certo momento podem depender dos valores iniciais de outras propriedades, se o autor julgar que há razão semântica para tal: o nível de felicidade da história, no caso do estado s2 do exemplo corrente, aumenta proporcionalmente ao medo inicial no evento, dada a resolução da tensão dramática. Tradicionalmente, sistemas de transição de estados para problemas de verificação de modelos abstraem as ações, ou os estados. Isto é comum para evitar definições e conceitos redundantes. Nossa abordagem mista é apropriada, no entanto, para sistemas de Storytelling Interativo, pois associar informação tanto aos estados como às transicoes é útil para a expressão de conteúdo autoral. De qualquer forma, as 29 modelagens são intercambiáveis e no modelo de verificação adota-se uma visão centrada nas ações (abstraindo a existência de estados). 3.2 Modelo de verificação e consulta O modelo proposto assume que são conhecidos de antemão a especificação abstrata dos eventos possíveis (e como esses modificam as propriedades dramáticas); e também as restrições típicas sobre essas propriedades que podem ser exigidas pelo gênero, pelo autor ou pela audiência. Assim, o processo de verificação pode ser realizado de forma offline, isto é, em tempo prévio e sobre as estruturas de dados abstratas. No momento da verificação, não se conhecem os valores para as propriedades dramáticas ou de contexto (referentes ao estado do mundo que é o domínio do planejamento). Semanticamente, o processo de verificação busca associar a cada possível instância de evento do gênero, em cada possível estado do mundo, uma lista de possíveis satisfações para cada restrição típica. A consulta, por sua vez, é realizada sobre os resultados da verificação, em tempo de planejamento – conhecendo-se os valores das propriedades dramáticas no momento inicial do evento. Busca-se permitir que o planejamento, ao encadear eventos, possa realizar consultas da forma geral: “Dado o estado atual do mundo S, o que é necessário para que α valha a partir do evento Ev?”; e que obtenha resultados na forma “É necessário que β1 valha no evento que sucede Ev acabando no final sf1; e que β2 valha no evento que sucede Ev acabando no final sf2”. Nesse exemplo, α é uma fórmula, Ev é um evento, sfi é um estado final de Ev, e βi é uma fórmula, dita fórmula residual da verificação, que precisa ser verificada a partir de um estado final. Cada fórmula residual βi pode ser true significando que não há restrição a ser garantida, ou false, se não há maneira de α ser satisfeita em Ev acabando naquele estado. Além disso, βi pode ser uma conjunção ou disjunção de fórmulas CTLestendidas. São dados alguns exemplos semânticos na Tabela 1. Em todos os exemplos, considera-se o estado atual do mundo S no qual a história que já está triste (no momento da consulta) e que o evento Ev considerado é o Try to Kidnap. Relembra-se o autômato do evento definido na Figura 3.2, e que os estados finais s1 e s2 representam, respectivamente, Vilão foragido e Vítima raptada. 30 Restrição α Expressão de Significado resultado “Há algum momento triste?” EF{joy<30} (S1,true) ou (S2, true) “Há a possibilidade da história ser sempre triste?” EG{joy<30} (S1,EG{joy<30}) ou (S2,EG{joy<30}) “Todas as histórias possíveis são sempre tristes?” AG{joy<30} (S1, AG{joy<30}) e (S2, AG{joy<30}) “Todas as histórias possíveis são muito tristes?” AG{joy<10} (S1,false) e (S2, AG{joy<10}) “Sim, isso é garantido pelo estado do mundo.” “Sim, desde que haja a possibilidade da história continuar sempre triste, na sequência a partir de um dos finais.” “Sim, desde que a sequência a partir de ambos os finais seja sempre triste.” “Não, pois essa condição não vale em uma das histórias possíveis” Tabela 1. Exemplos semânticos de consulta. O modelo assume que a fórmula α é dada sob uma gramática restrita: contém apenas um quantificador mais geral. A razão para tal é que isso simplifica consideravelmente o algoritmo de verificação de fórmulas em eventos abstratos, já que é possível tratar fórmulas aninhadas em chamadas puramente recursivas; e que assumese que as conjunções e disjunções de fórmulas podem ser tratadas sem prejuízo de custo computacional excessivo no nível do planejamento. O modelo considera que as restrições sobre propriedades de contexto invalidam transições. Se uma restrição de contexto não é satisfeita, considera-se que aquela transição não pode ser executada e, portanto, as histórias que dependem da sua execução não são consideradas como “histórias possíveis”. Como a verificação é offline e esse estado do mundo é desconhecido, essas restrições também são coletadas abstratamente, sendo associadas aos resultados. Expande-se na Tabela 2 um dos exemplos anteriores, demonstrando que cada expressão de um resultado é associado a um conjunto de restrições sobre propriedades de contexto, tornando-se um termo (sfi, rX, βi). 31 Expressão de Restrição resultado α Significado condicional “Há algum momento triste?” EF{joy<30} (S1,rA,true) ou (S2,rB true) “Sim, isso é garantido pelo estado do mundo.” “Há a possibilidade da história ser sempre triste?” EG{joy<30} (S1,rC,EG{joy<30}) ou (S2,rD,EG{joy<30}) “Sim, desde que haja a possibilidade da história continuar sempre triste, na sequência a partir de um dos finais atingíveis.” “Todas as histórias possíveis são sempre tristes?” AG{joy<30} (S1,rE, AG{joy<30}) e (S2,rF, AG{joy<30}) “Sim, desde que a sequência a partir de todos os finais atingíveis seja sempre triste.” (S1,rG,false) e (S2,rH,AG{joy<10}) “Não, se a condição não vale em uma das histórias possíveis; caso, contrário, apenas se todas as histórias possíveis a partir do final atingível forem sempre muito tristes.” “Todas as histórias possíveis são muito tristes?” AG{joy<10} Tabela 2. Exemplo resultado condicionados à restrições sobre propriedades de contexto. Na Tabela 2, os termos rA, rB, ..., rH representam os conjuntos de restrições sobre propriedades dramáticas coletados. Cada um desses conjuntos determina se é possível atingir o final correspondente na tripla, e se é necessário verificar a fórmula residual respectiva. No momento da consulta, tenta-se validar cada um desses conjuntos no estado corrente do mundo. Se o conjunto não é validado, o caminho no evento que leva até o final associado ao conjunto não é possível, e portanto não é necessário considerar a fórmula residual associada àquele final. Efetivamente, quando um conjunto rX não é validado, o termo da expressão do resultado ao qual ele pertence é eliminado. Se nenhum dos termos for satisfeito, nenhum dos finais do evento é atingível nesse contexto. O processo de consulta trata estes casos de forma especializada, conforme descrito na seção 4.4. Observa-se, na Tabela 2, em destaque em negrito, as mudanças semânticas nos significados desses resultados em relação à Tabela 1: • Na segunda restrição: o se rC não for validada, é necessário verificar apenas EG {joy<30} a partir do final S2; 32 o se rD não for validada, é necessário verificar apenas EG {joy<30} a partir do final S1; o se tanto rC como rD forem validadas, é necessário verificar EG {joy<30} a partir do final S1; ou EG {joy<30} a partir do final S2. • Na terceira restrição: o se rE não for validada, é necessário verificar apenas AG {joy<30} a partir do final S2; o se rF não for validada, é necessário verificar apenas AG {joy<30} a partir do final S1; o se tanto rE como rF forem validadas, é necessário verificar tanto AG {joy<30} a partir do final S1; como AG {joy<30} a partir do final S2. • Na quarta restrição: o se rG não for validada, é necessário verificar apenas AG {joy<10} a partir do final S2; o se rH não for validada, a restrição não é satisfeita nesse evento; o se tanto rG como rH forem validadas, a restrição não é satisfeita nesse evento. Mais formalmente, o objetivo do processo de verificação é mapear cada dupla (Ev, α) a um conjunto de resultados, doravante denominado R: • Ev é a especificação abstrata de um evento, associada tanto ao operador de planejamento como ao autômato não determinístico de controle de dramatização para esse evento; • α é uma fórmula CTL-estendida com apenas um quantificador mais geral, representando uma restrição típica sobre propriedades dramáticas neste gênero, ou gerada a partir do resultado de uma outra verificação neste gênero; Cada elemento em R é um resultado. Um resultado é composto por uma restrição e uma expressão. O resultado é dado pela dupla (CtrDram, ConditionalResid): • CtrDram é a restrição do resultado: um conjunto de restrições sobre propriedades dramáticas, que mapeia diversos estados do mundo para a expressão residual ConditionalResid. Estas restrições referem-se aos 33 valores das propriedades dramáticas no momento inicial do evento Ev; • ConditionalResid é a expressão do resultado, dada como uma conjunção ou disjunção de triplas (Sf,RCtx,ResidFormula): o Sf é um estado final do evento Ev; o RCtx é um conjunto de restrições sobre propriedades de contexto necessárias para que esse final seja atingível quando é necessário verificar ResidFormula a partir de Sf; o ResidFormula é uma formula CTL-Estendida no mesmo formato de α; representando uma possível restrição sobre propriedades dramáticas que deve valer no evento que segue Ev a partir de Sf. Relembra-se que a variação das propriedades dramáticas é definida em autômatos de perspectiva mista (ações e estados). Para simplificar o processo de verificação, é gerada para cada evento uma árvore de execução a partir de seu autômato e da assinatura de seu operador lógico. Essa estrutura de dados apresenta duas vantagens principais: • finita: valendo-se da informação dos tempos necessários para cada transição e do tempo máximo de execução do autômato, a árvore gerada é finita. Assim, evita-se um dos problemas relacionados à verificação de propriedades em sistemas de transição de estados – a verificação infinita. • centrada em ações: todas as informações da árvore de execução representam as ações internas que tomam parte no evento. As variações das propriedades dramáticas, as restrições sobre propriedades de contexto, etc. são todas dadas em relação às sequências de transições, abstraindo-se a existência de estados. O processo de consulta, por sua vez, utiliza os resultados gravados pelo processo de verificação. A consulta é realizada passando-se como parâmetro uma dupla (Ev, α) e o estado atual do mundo – que contém os valores tanto das propriedades dramáticas quanto de contexto – para obter-se o conjunto R de resultados da verificação dessa fórmula sobre esse evento. A consulta percorre essa estrutura R coletando uma lista dos ConditionalResid que tiveram o conjunto ConstrDram satisfeito pelo estado do mundo. Lembrando que cada ConditionalResid é uma conjunção ou disjunção de triplas (Sf,RCtx,ResidFormula), 34 obtém-se uma conjunção ou disjunção de duplas (Sf,ResidFormula) eliminando-se os termos de ConditionalResid que tem o conjunto RCtx insatisfeito. A expressão resultando contém todas as fórmulas residuais ResidFormula que devem ser verificadas a partir de Ev acabando em um estado Sf específico. Outra observação necessária é a de que, adotando o modelo proposto, o planejamento torna-se dependente do processo de pré-verificação no que diz respeito à consideração de restrições sobre propriedades dramáticas. Isto é, o planejamento só é capaz de tratar a satisfação de fórmulas que foram pré-verificadas. Assim, é necessário que o processo de verificação trate cada fórmula βi como uma nova fórmula típica, mesmo que ela não seja explicitamente listada no gênero como tal, e que gere resultados para a sua verificação. O processo de verificação é, como uma técnica de verificação de modelos, exaustivo, sendo realizado em relação a cada possível restrição típica aplicada a cada evento do gênero. Assim, os resultados são completos – não há fórmula possível no gênero sem resultados indexados em relação a cada final de cada evento. Os resultados de cada rodada de pré-verificação são reutilizáveis, e servem para todas as gerações de enredos futuras naquele gênero. O gênero pode ser atualizado com novas fórmulas típicas (por exemplo, por nova inferência de preferências de usuários); e apenas as novas fórmulas (e suas possíveis subfórmulas) precisam ser verificadas em nova rodada do algoritmo. A atualização de eventos, com a modificação da variação das propriedades contínuas, no entanto, implica na necessidade de re-verificar todas as fórmulas em relação ao evento modificado. Além de reutilizáveis, os resultados do processo de verificação podem ser utilizados em paralelo. Isso quer dizer que duas instâncias diferentes do mesmo sistema de Storytelling Interativo podem consultar os mesmos dados pré-verificados concomitantemente sem interferência. Conforme descrito na seção 2.4.1, a lógica temporal ramificada aplicada ao domínio de storytelling assume um tempo finito – isto é, que há um ponto final da história. Como o trabalho de verificação realizado nesta dissertação trata dos eventos em forma abstrata, é impossível distinguir se um evento possui ou não possui continuação. Assim, o tratamento especializado para a satisfação de fórmulas em estados finais de eventos finais da história é deixado a cargo do planejamento. Os algoritmos referentes aos processos de verificação e consulta descritos aqui são dados no capítulo seguinte. 35 4 Algoritmos de Verificação Abstrata Esta seção descreve os algoritmos implementados para realizar a pré-verificação das restrições sobre propriedades dramáticas em eventos abstratos de um gênero. A descrição dos algoritmos é feita segundo uma notação em pseudo-código na qual os nomes destacados em VERSALETE indicam chamadas a algoritmos; e termos com a primeira letra maiúscula em Itálico indicam variáveis. O símbolo “//” indica comentário de código (a partir do símbolo até o final da linha corrente). Ao longo das descrições dos algoritmos, os quantificadores de caminho (A e E) e operadores de estado (F, G, end ou U) da lógica CTL-estendida são destacados em negrito para não serem confundidos com variáveis. Relembra-se que a verificação de uma fórmula é feita sobre a definição abstrata de um evento, já que os valores concretos do estado do mundo e das propriedades dramáticas não são conhecidos – só serão conhecidos durante o processo de planejamento. Para tal, são utilizadas restrições (constraints) em constraint logic programming (CLP) que, combinadas, definem as diversas situações diferentes a serem tratadas. O uso de constraints em CLP é essencial para expressar e verificar a consistência dessas restrições sobre propriedades dramáticas. 4.1 Processamento exaustivo O modelo prevê a verificação exaustiva das fórmulas em todos os eventos do gênero. Isto é, para cada fórmula, em relação a cada evento, são gerados resultados mapeando todos os estados possíveis do mundo a uma fórmula que deve ser verificada na sequência. Estes estados do mundo não são enumerados, no entanto, mas classificados de acordo com a restrições sobre as propriedades de contexto e dramáticas. O algoritmo VERIFY_FORMULAE_EVENTS controla o processo de verificação em seu nível mais alto, gerenciando os resultados da verificação sobre cada par evento fórmula típica. Nas próximas seções são descritos os algoritmos referentes a esse processo de alto nível. 36 4.1.1 Verify_Formulae_Events O algoritmo VERIFY_FORMULAE_EVENTS é descrito no item Algoritmo 4-1. Este algoritmo é responsável por invocar o algoritmo VERIFY para cada par evento, fórmula típica e por verificar fórmulas residuais não-típicas, mantendo a completude dos resultados. O modo de operação do algoritmo é: primeiro, são geradas as árvores de execução de todos os eventos do gênero. Depois, todas as fórmulas típicas são iterativamente verificadas sobre todas as árvores. Ao longo do processo, cada fórmula residual encontrada que ainda não foi verificada é adicionada ao conjunto de fórmulas a verificar. O motivo para esse tratamento de fórmulas residuais (conforme descrito na seção 3.2) é que, no modelo proposto, o processo de planejamento se torna dependente da pré-verificação para lidar com fórmulas temporais sobre propriedades dramáticas. Se o processo de planejamento consulta a satisfação de uma fórmula f1 sobre um evento qualquer, e recebe como resposta que é necessário verificar uma fórmula f2 no evento seguinte; então é preciso que f2 também tenha sido pré-verificada – mesmo que não seja uma fórmula típica explícita no gênero – já que, sem o processo de pré-verificação, o planejamento não pode distinguir se uma fórmula é válida ou não em um evento. 37 1. VERIFY_FORMULAE_EVENTS(GEN) 2. DP = conjunto de propriedades dramáticas de GEN, 3. FT = conjunto de fórmulas típicas de GEN, 4. EVS = conjunto de eventos de GEN, 5. L_TREES = [ ] 6. para cada evento E em EVS: 7. TR = GEN_TREE (E, GEN), 8. L_TREES = UNION(L_TREES,TR) 9. L_VERIFIED = [ true, false ] 10. R=[] 11. enquanto FT ≠ [ ] //fórmulas a verificar //fórmulas já verificadas //Resultados 12. L_RESIDS = [ ] 13. remove-se a primeira fórmula F de FT 14. UNION (F, L_VERIFIED) 15. para cada par evento-árvore TR=(E,TREE) em L_TREES 16. RF = VERIFY(E, {true}, DP, F, TREE) 17. para cada fórmula residual Resid em RF 18. se Resid ∉ L_VERIFIED 19. L_RESIDS += Resid 20. RECORD(E,FT,RF) 21. UNION (FT, L_RESIDS) Algoritmo 4-1. Verify_Formulae_Events. O algoritmo recebe como parâmetro de entrada um identificador de um dos gêneros presente na base de conteúdo. A partir desse identificador, são obtidos os conjuntos: • DP, de propriedades dramáticas (linha 2); • FT, de fórmulas típicas a verificar (linha 3); • EVS, de eventos (linha 4). O algoritmo começa coletando todas as árvores de execução (linhas 5-8). É gerado um elemento TR para cada evento E em EVS através de chamada ao algoritmo GEN_TREE, descrito na seção 4.1.2. Esse elemento TR é uma dupla (E,TREE), associando um evento a uma árvore de execução. 38 É definida uma lista L_VERIFIED de fórmulas já testadas sobre todas as árvores (linha 9). Esta lista é inicializada contendo os valores true e false, pois essas fórmulas não são consultadas pelo planejamento, e não é necessário verificá-las. O algoritmo prossegue selecionando uma das fórmulas em FT para verificar sobre todas árvores em L_TREE. Essa fórmula F é removida do conjunto FT e é adicionada ao conjunto L_VERIFIED (linhas 13-14). A verificação da fórmula F é realizada invocando-se o algoritmo VERIFY, descrito na seção 4.2. O conjunto RF de resultados (linha 16) da verificação dessa fórmula sobre esse evento é dado por esse algoritmo. Nas linhas 17 a 19, todas as fórmulas residuais geradas pelo processo de verificação que ainda não foram testadas são adicionadas ao conjunto L_RESIDS de fórmulas a testar. A aplicação do algoritmo de união (linha 21) garante a não duplicidade das fórmulas na geração do novo conjunto FT. A chamada ao procedimento RECORD na linha 20 representa a gravação dos resultados para a verificação da fórmula F sobre o evento E em uma estrutura global. Essa estrutura indexa cada par (E,F) em relação a um resultado RF. 4.1.2 Gen_Tree Como a variação das propriedades dramáticas é definida nos autômatos não determinísticos associados aos eventos, é preciso limitar os possíveis ciclos na execução desses autômatos de forma a evitar que o processo de verificação seja infinito. Para tanto, o algoritmo GEN_TREE faz uso da informação contida no gênero para gerar uma árvore de execução: uma estrutura de dados finita que contém toda a informação necessária para a execução do evento. A árvore gerada é finita, pois é utilizada informação contida no gênero para limitar o tempo de execução. Para gerar a estrutura, o algoritmo GEN_TREE, descrito no item Algoritmo 4-2, considera as seguintes informações: • Cada transição é composta por uma seqüência de micro-ações; • Cada micro-ação tem tempo de dramatização definido; • Cada evento tem tempo máximo e mínimo de dramatização. O algoritmo utiliza o algoritmo auxiliar GEN_SEQUENCES, que recursivamente gera sub-árvores dado um estado inicial S, um tempo já percorrido no evento e os limites máximo e mínimo de tempo de execução para o restante da árvore. 39 1. GEN_TREE(E, GEN) 2. LowB = tempo mínimo para a execução de E em GEN, //Lower Bound 3. HiB = tempo máximo para a execução de E em GEN, //Higher Bound 4. S = estado inicial de E, //State 5. TS = conjunto de transições possíveis a partir de S, //Transition Set 6. (EndPaths,Subtrees) = GEN_SEQUENCES(E, S, TS, LowB, HiB, [ ], 0), 7. se Subtrees ≠ nil 8. 9. 10. 11. TREE = (nil, S, 0, [ ], EndPaths, Subtrees) senão TREE = nil retorna TREE Algoritmo 4-2. Gen_Tree. O algoritmo recebe como parâmetros de entrada os identificadores únicos do evento e do gênero, para obter a informação sobre o tempo máximo e mínimo possível de dramatização desse evento nesse gênero. Gera-se como retorno uma estrutura de dados que representa a árvore. Essa estrutura é recursivamente definida na forma (SIni, SEnd, D, CtxAcc, EndPaths, Subtrees): • SIni é o estado inicial da transição; • SEnd é o estado final da transição; • D é a duração, em segundos, da transição; • CtxAcc é o conjunto de restrições sobre propriedades de contexto acumulado até a transição atual (inclusive); • EndPaths é um conjunto de duplas (Fin,LCtx); nas quais: o Fin é o identificador de um estado final do evento; e o LCtx é um conjunto de restrições sobre propriedades de contexto acumulado até atingir Fin; • Subtrees é uma lista de árvores de transição a partir de SEnd. Transições terminais têm SEnd como um estado terminal do autômato e a lista Subtrees vazia. Uma árvore de execução é tal, portanto, que sempre contém apenas uma transição inicial, i.e., apenas uma aresta partindo do seu nó raiz. A árvore inicial possui um nó raiz nil, duração zero, e um caminho percorrido vazio, sem restrições sobre 40 propriedades de contexto. Essa transição identifica a origem da execução do evento. Formalmente, a transição inicial é dada na forma especial (nil, Sini, 0, [ ], SRCtx, EndPaths, Subtrees), sendo Sini o estado inicial do autômato e [ ] a representação de uma lista vazia. A árvore de execução também guarda em todas as transições a informação sobre os finais possíveis, e as sequências de transições necessárias para atingi-los. Essa informação é contida no conjunto EndPaths. Semanticamente, o conjunto EndPaths de uma árvore provê informação sobre todos os caminhos possíveis para todos os finais a partir daquele ponto na árvore. Essa informação é necessária para a gravação de resultados sem que seja necessário percorrer a árvore até o final. Nota-se que a informação sobre a variação das propriedades dramáticas está contida, na árvore de execução, apenas implicitamente. Através dos identificadores dos estados é possível consultar o banco de dados que contém as definições do gênero e recuperar a informação sobre como as propriedades variam. 41 4.2 Algoritmo de verificação 1. VERIFY(E, ConstrAcc, DP, Expr, Tree) 2. TREE = (IniS, EndS, D, CtxAcc, EndPaths, L_SubTrees) 3. Transition = (IniS,EndS,D) 4. (L_Elems, ExprElems) ← EXPRELEMS(Expr) 5. L_Result = [ ({true}, ExprElems) ] 6. para cada Elem em L_Elems 7. Elem = (ElemF, ElemVar) 8. L_RespAllSit = [ ] 9. L_Sit ← SATISFACTION(E, ConstrAcc, DP, ElemF,Transition) 10. para cada Sit em L_Sit 11. Sit = (SitCtr, SitResid) 12. se SitResid = true ou SitResid = false 13. 14. 15. L_RespSit ← ENDPATHRESIDS(SitCtr,EndPaths,SitResid, ElemF) senão se L_SubTree = [ ] 16. L_RespSit ← DISTRIBUTERESIDS(SitCtr, CtxAcc,p EndS, SitResid) 17. senão 18. L_RespSit = [ ] 19. para cada SubTree em L_SubTrees 20. L_RespSitPartial ← VERIFY(E, SitCtr, DP, SitResid, SubTree) 21. L_RespSit ← COMBINESITUATIONS(L_RespSit, L_RespSitPartial, ElemF) 22. 23. L_RespAllSit ← UNION(L_RespAllSit,L_RespSit) L_Result ← COMBINERESULT(L_Result, L_RespAllSit, ElemVar) 24. retorna L_Result Algoritmo 4-3. Verify. O processo de verificação é mostrado no Algoritmo 4-3. Ele opera recursivamente, gerando o resultado da verificação de uma expressão sobre uma árvore de execução. Recebe como parâmetros: 42 • O identificador do evento E, utilizado no algoritmo de satisfação para poder recuperar os valores das propriedades nos estados desse evento; • O conjunto ConstrAcc de restrições sobre propriedades dramáticas acumuladas até esse ponto; • O conjunto DP de variáveis, representando os valores das propriedades dramáticas no instante inicial do evento. As restrições acumuladas ao longo da verificação são afirmadas sobre essas variáveis; • A expressão Expr, uma conjunção ou disjunção de fórmulas CTLestendidas, cada uma delas com apenas um quantificador mais geral; • A árvore de execução Tree, no formato descrito na seção 4.1.2. A expressão de entrada Expr contém a fórmula a ser verificada na árvore Tree. Como Expr pode ser uma disjunção ou conjunção de fórmulas CTL-estendidas com apenas um quantificador mais geral, cada elemento em Expr é tratado em separado. Os resultados gerados pelo tratamento de cada um desses elementos são combinados incrementalmente. A expressão Expr é ‘separada’ em elementos na chamada ao algoritmo auxiliar EXPRELEMS. Essa chamada (linha 4) recebe Expr e produz uma dupla (L_Elems, ExprElems), na qual: • L_Elems é uma lista de duplas (Elem,Var), na qual: o Elem é um dos elementos da expressão original; o Var é uma variável placeholder (identificadora de posição) associada a Elem; • ExprElems é uma cópia da expressão original, na qual cada elemento é substituído pela variável Var associada ao Elem correspondente. ExprElems é utilizada para compor o valor inicial dos resultados em L_Result. Ao longo do processamento, os resultados produzidos nas chamadas recursivas substituem essas variáveis - assim, se a expressão original recebida é uma disjunção/conjunção, o resultado final contém a disjunção/conjunção, respectivamente, dos resultados das chamadas recursivas. A qualquer momento, a lista L_Result guarda a combinação dos resultados gerados para cada elemento da expressão já tratado. Ela é um conjunto de resultados 43 dados na forma descrita na seção 3.2. Ou seja, cada membro de L_Results é uma dupla (CtrDram, ConditionalResid), onde: • CtrDram são as restrições do resultado; • ConditionalResid é a expressão do resultado, uma conjunção ou disjunção de triplas (Sf,RCtx,ResidFormula): o Sf é um estado final do evento; o RCtx um conjunto de restrições sobre propriedades de contexto; o ResidFormula uma fórmula CTL-estendida com apenas um quantificador mais geral. A princípio, a lista L_Result contém apenas a dupla ({true},ExprElems) (linha 5). Conforme cada elemento Elem da expressão original é tratado (no ciclo que começa na linha 6), é gerada uma lista de resultados L_RespAllSit para esse elemento. Cada dupla na lista L_Result é combinada com cada um dos elementos em L_RespAllSit através de uma chamada a COMBINERESULTS (linha 23). Essa combinação corresponde à criação das diferentes situações referentes às fórmulas já tratadas com as situações relacionadas à nova fórmula. Cada combinação que gera uma nova situação que não seja consistente será desconsiderada no resultado final. Assim, ao final do processo, L_Result é retornado contendo as combinações dos resultados gerados pelo tratamento de cada um dos elementos Elem na expressão original Expr. Note que, na chamada de COMBINERESULTS, é passada como parâmetro a variável ElemVar que representa os resultados de ElemF. O algoritmo cuida de instanciar essa variável com os repectivos resultados que aparecem em L_RespAllSit para cada situação, bem como de fazer simplificações de fórmulas sempre que possível. Cada elemento Elem na expressão original Expr é uma fórmula a ser satisfeita na primeira transição Transition da árvore atual Tree. Essa análise de satisfação (linha 9) gera uma lista de situações alternativas para esta fórmula, L_Sit. Cada uma destas situações mapeia um conjunto distinto de estados do mundo a fórmulas que precisam ser verificadas nas sequências da transição inicial da árvore (linha 11). Uma situação Sit é uma dupla (SitCtr,SitResid) (linha11). O conjunto de estados do mundo ao qual a situação se aplica é dado por um conjunto de restrições sobre propriedades dramáticas SitCtr. A expressão (conjunção e/ou disjunção de fórmulas) que é preciso verificar nas continuações nessa situação é dada por SitResid. 44 O ciclo que começa na linha 10 trata cada situação, gerando uma lista L_RespSit de resultados para essa situação que possivelmente se desdobra em várias situações de acordo com as próximas transições em cada uma das subárvores. Esse tratamento distingue três casos diferentes, discutidos a seguir. L_RespSit contém o resultado incremental das combinações das situações resultantes do tratamento de cada uma das subárvores para a situação (SitCtr, SitResid). Quando a situação acaba de ser tratada, os seus resultados em L_RespSit são iterativamente adicionados à lista L_RespAllSit. A princípio, essa lista é vazia (linha 8), mas ao final do ciclo deve conter os resultados combinados de todas as situações tratadas sobre todas as sub-árvores para um dado elemento Elem da fórmula Expr que está sendo verificada. 4.2.1 Tratamento das situações Uma situação pode ser tratada de três modos distintos. Nessa seção, descreve-se os algoritmos que geram a lista de respostas para uma dada situação, em cada um desses casos. 4.2.1.1 Situação com fórmula residual true ou false Primeiro, considera-se o caso no qual uma situação mapeia um estado do mundo a uma falha ou sucesso incondicional (isto é, quando SitResid é false ou true, respectivamente). Nesse caso, utiliza-se a informação sobre os caminhos completos até os finais da árvore para compor-se um resultado. Esse processo é tratado pelo algoritmo ENDPATHRESIDS (linha 13), descrito no Algoritmo 4-4. 1. ENDPATHRESIDS(SitCtr, EndPaths, SitResid,ElemF) 2. ElemF = (PQ, _, _), 3. ResExpr = true 4. para cada dupla Path em EndPaths 5. Path = (Sf, RCtx) 6. se PQ = A 7. ResExpr ← MAKECONJ (ResExpr,(Sf,RCtx,SitResid)) 8. senão, se PQ = E 9. ResExpr ← MAKEDISJ(ResExpr,(Sf,RCtx,SitResid)) 10. retorna [ (SitCtr,ResExpr) ] Algoritmo 4-4. EndPathResids. Esse algoritmo recebe: 45 • SitCtr, o conjunto de restrições sobre propriedades dramáticas da situação, a ser inserido no resultado; • EndPaths, uma lista de duplas (Sf,RCtx), onde Sf é o estado final do autômato atingido ao final de um caminho da árvore e RCtx é o conjunto de restrições sobre propriedades de contexto necessárias para que Sf seja alcançado. Cada elemento de EndPaths forma uma tripla na expressão do resultado; • SitResid que nesse caso tem o valor true ou o valor false; é a fórmula residual em cada termo da expressão do resultado. • ElemF é a fórmula que gerou a situação que está sendo analisada para as folhas da árvore. O quantificador de caminho dessa fórmula, PQ, determina se a expressão do resultado é uma conjunção ou disjunção de termos. Os algoritmos MAKECONJ e MAKEDISJ são aplicados caso o quantificador seja A ou E, respectivamente. O algoritmo ENDPATHRESIDS retorna um conjunto com um único resultado (SitCtr,ResExpr); onde ResExpr é uma conjunção ou disjunção de triplas, cada uma formada pelo estado final Sf e pelas restriçõs de contexto RCtx que formam cada elemento de EndPaths, juntamente o valor true ou false de SitResid, replicado em todas as triplas. No algoritmo VERIFY, esse resultado é recebido como L_RespSit (Algoritmo 4-3, linha 13). Esse algoritmo é usado para marcar registrar que para todos os finais que podem ser alcançados em uma árvore, a fórmula que estava sendo verificada tem valor true ou false, evitando-se chamadas recursivas ao algoritmo VERIFY, uma vez que a satisfação ou não da fórmula terá sido detectada. 4.2.1.2 Situação gerada em transição final da árvore O segundo caso para o tratamento de uma situação é quando não há sub-árvores; isto é, a transição Transition (Algoritmo 4-3, linha 3) leva a um estado final EndS que é um estado final do evento. Nesse caso, uma chamada ao algoritmo DISTRIBUTERESIDS (Algoritmo 4-3, linha 16) gera um resultado referente a esse final do evento. O algoritmo DISTRIBUTERESIDS é dado no item Algoritmo 4-5. 46 1. DISTRIBUTERESIDS(SitCtr,CtxAcc,EndS,SitResid) 2. (ResidElems, ResExpr) ← EXPRELEMS(SitResid) 3. para cada Elem em ResidElems 4. Elem = (ElemF, ElemVar) 5. Resp = (EndS,CtxAcc,ElemF) 6. ResExpr ← SUBSTITUTE(ResExpr,ElemVar,Resp) 7. retorna [ (SitCtr,ResExpr) ] Algoritmo 4-5. DistributeResids. Esse algoritmo recebe: • SitCtr, o conjunto de restrições a ser associado ao resultado para esse final da árvore; • CtxAcc, as restrições sobre propriedades de contexto acumuladas até o final da árvore nesse caminho. Cada tripla na expressão do resultado contém CtxAcc; • EndS é o final atingido nesse caminho da árvore. Cada tripla na expressão do resultado é dada em relação à EndS; • SitResid, a residual da situação; que pode ser uma disjunção ou conjunção de fórmulas CTL-estendidas. Se SitResid é apenas uma fórmula (e não uma conjunção ou disjunção de fórmulas), o resultado é a dupla (SitCtr,(EndS,CtxAcc, SitResid)). Caso SitResid seja uma conjunção ou disjunção de fórmulas, o resultado retornado terá como expressão uma conjunção ou disjunção de triplas, respectivamente. O algoritmo EXPRELEMS é utilizado para gerar uma expressão no mesmo formato de SitResid com variáveis placeholder. Conforme os elementos de SitResid são processados, as variáveis placeholder em ResExpr são substituídas por triplas formadas por EndS, CtxAcc e o termo em SitResid equivalente àquela variável. Esse algoritmo é usado para registrar o que precisa valer quando se encontra um estado final do autômato, sendo a condição de parada normal do algoritmo recursivo VERIFY. 4.2.1.3 Situação verificada sobre todas as sub-árvores Por fim, o terceiro caso para o tratamento de uma situação é aquele no qual há sub-árvores. A expressão dada por SitResid (Algoritmo 4-3, linha 11) é passada a uma chamada recursiva ao algoritmo de verificação para cada uma das sub-árvores (Algoritmo 4-3, linha 21), gerando uma lista de resultados parcial L_RespSitPartial. A 47 lista L_RespSit é iterativamente combinada com cada L_RespSitPartial através do algoritmo COMBINESITUATIONS, dado no Algoritmo 4-6. 1. COMBINESITUATIONS(L_Current, L_Add, ElemF) 2. ElemF = (PQ, _, _), 3. L_RespNew = [ ] 4. para cada RespC em L_Current 5. RespC = (CtrC, ExprC) 6. para cada ElemAdd em L_Add 7. RespAdd = (CtrA, ExprA) 8. CtrN = CtrC and CtrA 9. se CtrN é consistente 10. se PQ = A 11. ExprN = ExprC and ExprA 12 . senão, se PQ = E 13. ExprN = ExprC or ExprA 14. L_RespN = (CtrN,ExprN) 15. L_RespNew ← UNION(L_RespNew, L_RespN) 16. retorna L_RespNew Algoritmo 4-6. CombineSituations. O algoritmo COMBINESITUATIONS gera uma lista de resultados que combina cada resultado já coletado (L_Current) com cada novo resultado (L_Add). O algoritmo efetivamente gera todas as possíveis m x n combinações de situações, gerando um novo resultado para cada possível par (m,n); no qual m é uma situação (RespC) em L_Current e n é uma situação (CtrA) em L_Add. Combinações de estados que não são consistentes são descartadas. As expressões nos resultados m e n são combinadas levando-se em consideração o quantificador de caminhos da fórmula ElemF. Caso o operador seja E, os resultados são combinados em uma disjunção, e caso o operador seja A, a combinação é feita em uma conjunção. Neste processo, conjunções e disjunções de um mesmo elemento são simplificadas e simplificações são também feitas quando a fórmula a ser combinada é true ou false. 4.3 Satisfação O algoritmo SATISFACTION é descrito no Algoritmo 4-7. 48 1. SATISFACTION(E, CtrIn, DP,F,T) 2. F = (PQ, SOp, Expr), 3. se SOp == end 4. L_ALTS = [(true, F) ] //a própria fórmula, sem restrição 5. senão 6. se ARITHCONJ(Expr) 7. L_ALTS ← SATISFACTION_BASIC(E, CtrIn, DP,F, T) 8. senão 9. (Alpha, Beta) ← SEPARATE_SUBFORMULA(Expr) 10. NF = (PQ,SOp,Alpha) 11. L_Partial ← SATISFACTION(E, CtrIn, DP, NF, T) 12. L_ALTS ← SATISFACTION_DEPEND(E, F, Beta, DP, T, L_Partial) 13. retorna L_ALTS Algoritmo 4-7. Satisfaction. O algoritmo recebe como parâmetros de entrada: • O identificador do evento E, para poder recuperar os valores das propriedades nos estados desse evento; • O conjunto de restrições sobre as propriedades dramáticas acumuladas até o momento em CtrIn; • O conjunto de variáveis representativas de propriedades dramáticas DP; • A fórmula F sobre a qual é preciso gerar as situações alternativas de verificação a partir da transição atual; • A transição atual T. O algoritmo de satisfação de uma fórmula é responsável por gerar uma lista de situações alternativas a serem verificadas após uma transição da árvore de execução. Todos os casos possíveis devem ser cobertos como alternativas distintas. A saída do algoritmo é um único parâmetro L_ALTS, uma lista de alternativas. Pode-se perceber que há dois modos principais de tratamento: quando a expressão interna da fórmula é uma conjunção de relações aritméticas básicas, é invocado o algoritmo SATISFACTION_BASIC (linhas 6-7). Relações aritméticas básicas são definidas neste trabalho como equações e inequações que relacionam combinações lineares dos valores das propriedades dramáticas. Caso contrário é realizada uma chamada recursiva ao algoritmo SATISFACTION e uma composição de alternativas através da chamada ao algoritmo SATISFACTION_DEPEND (linhas 8-12). Relembra-se que o processo de verificação trata apenas de fórmulas com um quantificador mais geral, na forma F = (QC, SOp, Expr), 49 onde QC é o quantificador de caminho (A ou E); SOp é o operador de estado (F, G, end ou U), e Expr é a expressão interna da forma ((ar0 and ar1 and ... arn) and SubF), na qual: • cada termo ari é uma relação aritmética básica; • SubF é uma subfórmula, dada na mesma forma de F. Essa restrição sobre SubF - de que deve ser dada na mesma forma de F e possuir apenas um quantificador mais geral - é admitida para que o algoritmo SATISFACTION possa operar recursivamente. Essa restrição é, portanto, introduzida pela implementação do algoritmo (e não pelo modelo de pré-verificação proposto). O algoritmo opera com um caso especial para o operador end, que define uma restrição sobre o último instante da história ou capítulo. Como a verificação é abstrata, não se conhece o contexto da aplicação do evento E na história, e não se sabe se esse evento é capaz de satisfazer uma restrição que fala sobre o fim da história ou capítulo. Portanto, fórmulas com o operador end são simplesmente repassadas como fórmulas residuais nas alternativas – sem restrições – e gravadas nos resultados no final da verificação; cabendo seu tratamento ao planejamento de enredos. Também relembra-se que os valores das propriedades dramáticas contínuas são abstratamente definidos para cada estado do autômato do evento, em função dos valores de entrada, ou seja, os valores do estado inicial. Durante o planejamento, esses valores são instanciados de acordo com valores que são calculados de acordo com o estado final do evento que antecedeu o evento corrente. No caso da primeira transição de um evento, que parte de um estado nil, a geração de alternativas sempre é dada em relação ao valores pontuais de entrada. Isto é: na transição inicial da primeira árvore, as constraints ligadas às alternativas simbolizam restrições sobre as propriedades dramáticas no instante inicial do evento. No caso das demais transições, as constraints representam restrições que devem valer em algum ponto ou em algum intervalo da transição – possivelmente a transição inteira. Define-se uma chamada de exemplo na qual o algoritmo de satisfação é chamado sobre a transição t1 passando-se como parâmetro a fórmula β1. Para exemplificar o funcionamento do algoritmo SATISFACTION, demonstra-se o caso no qual β1 é a fórmula EF ({Joy ≥ 50}, de modo a explorar o tratamento da satisfação de fórmulas com expressão interna básica. Isto é descrito na seção 4.3.1.1. Depois, demonstra-se essa chamada com β1 sendo a fórmula EF ({Joy ≥ 50} and AG {Joy ≥ 50}), 50 para exemplificar o tratamento de fórmulas aninhadas. Este exemplo é descrito na seção 4.3.1.2. Em ambos os exemplos, assume-se que a propriedade Joy dobra ao longo da transição entre os estados s0 e s2. 4.3.1.1 Satisfação de expressões básicas Para os casos mais básicos de satisfação – fórmulas nas quais a expressão interna é uma relação aritmética básica, é chamado o algoritmo SATISFACTION_BASIC. Esse algoritmo é descrito no Algoritmo 4-8. 1. SATISFACTION_BASIC(E, CtrIn, DP,Formula,T) 2. Formula = (PQ, SOp, Expr), 3. T = (ORIG, DEST, D), 4. (OrigVal, DestVals) ← COLLECT_ABSTRACT_VALUES(E, DP, ORIG, DEST) 5. (VariationsCtrs,VarsInterval ) ← DEFINE_VARIATIONS (OrigVals,DestVals,D) 6. L_ALTS ← COMPOSE_ALTERNATIVES(SOp, AltExpr,NAltExpr ) 7. retorna L_ALTS Algoritmo 4-8. Satisfaction_Basic. Nessa processo, são dados como parâmetros de entrada: • E, o identificador do evento; • CtrIn, as constraints acumuladas até o momento inicial da transição sobre a qual a satisfação da fórmula corrente é analisada; • DP, o conjunto de variáveis representando as propriedades dramáticas; • Formula, a fórmula cuja satisafação é analisada na transição corrente; • T, a transição corrente. A fórmula Formula é composta por um quantificador de caminhos PQ, um operador de estados SOp e uma relação aritmética básica Expr. A transição T é definida por um estado inicial ORIG, um estado terminal DEST e uma duração D. Apresenta-se um exemplo de execução do algoritmo, e, na sequência, uma explicação detalhada do código. Assume-se, no exemplo, a fórmula de entrada EF {Joy ≥ 50} sendo verificada sobre uma das subárvores geradas para um evento “Donate”. Essa fórmula representa a restrição: “há algum caminho no qual, em algum instante, Joy é maior ou igual a 50”. A Figura 4.1 mostra graficamente a chamada realizada. 51 Figura 4.1. Chamada, pelo algoritmo de verificação, ao algoritmo de satisfação para fórmula com expressão interna básica. Nessa chamada, já se está tratando a restrição de que o valor da propriedade dramática Joy, no momento inicial do evento, representado pela variável Joy0, é menor do que 50. Essa restrição foi adicionada pela verificação na transição anterior, que gerou como residual a fórmula que está sendo verificada em nosso exemplo. A verificação que está sendo feita deve tratar as situações diferentes que podem decorrer desse fato. O primeiro passo do algoritmo de satisfação, quando está tratando de uma fórmula básica, é consultar a base de dados. Essa consulta (COLLECT_ABSTRACT_VALUES) obtém os valores abstratos das propriedades dramáticas nos estados da transição atual. A consulta, no exemplo corrente, retorna as seguintes expressões: • em s0, o valor da propriedade Joy, representado pela variável nova JoyOrig, é igual ao valor de entrada, representado por Joy0; • em s2, o valor de Joy, representado por JoyDest é igual a duas vezes o valor de entrada (isto é, 2*Joy0). Além de usar variáveis para representar os valores nos extremos dos intervalos, é necessário criar variável para representar o valor em momentos ao longo do intervalo, assumindo a variação linear com o tempo. Este valor depende dos valores de origem e de destino e de um tempo proporcional à duração do intervalo. Este tratamento é realizado pelo algoritmo DEFINE_VARIATIONS. No exemplo corrente, a variável produzida para representar este instante genérico é JoyMid. Sobre ela é gerada a constraint {JoyMid = JoyOrig + (JoyDest- JoyOrig) 52 *Time/D}que é simplificada para {JoyMid = Joy0 + Joy0*Time/D}, onde Time é uma variável que representa o tempo transcorrido e D é a duração da transição. A Figura 4.2 mostra semanticamente como JoyMid representa o valor de Joy ao longo da transição do estado s0 para s2. Quando o tempo é zero, JoyMid ainda não sofreu variação em relação a JoyOrig e tem valor Joy0. Conforme o tempo passa (e o valor de Time aumenta), JoyMid torna-se progressivamente mais próxima do valor final, até tornar-se exatamente igual a JoyDest (no exemplo, 2*Joy0) quando o tempo é igual a duração da transição. Figura 4.2. Variação da propriedade Joy ao longo de uma transição na qual dobra de valor, em relação a uma variável que representa o tempo transcorrido. Nota-se, na Figura 4.2, que sobre a variável Time são geradas constraints que descrevem o intervalo no qual a transição acontece. As constraints, na figura, ainda não estão na forma simplifica a ser provida pelo constraint solver. Todas as situações a serem consideradas para a satisfação da fórmula deverão satisfazer a essas restrições e a restrições específicas de cada situação. Uma vez tratada a variação das propriedades na transição, com variáveis para representar seus valores ao longo dessa transição, pode-se agora tratar as alternativas de satisfação da fórmula Formula de acordo com a fórmula que está sendo verificada. Este tratamento, tipicamente implica em adicionar restrições em cima dessas variáveis. Alternativas são então compostas juntando, na constraint store, as restrições de entrada CtrIn com as restrições relativas à variação linear das propriedades VariationCtrs e as restrições de cada alternativa. O constraint solver verifica a consistência da alternativa e simplifica o conjunto de restrições em uma expressão que representa a situação. A fórmula residual da alternativa é dada segundo o operador de estados da 53 fórmula. Sempre que a alternativa for consistente, ela deve ser considerada. No caso do exemplo, como a fórmula tem operador F, expressando que a subfórmula deve valer em algum momento, as alternativas compostas são: • ({CtrIn and CtrVars and JoyMid ≥ 50}, true); Representando que em algum momento da transição o ‘novo valor’ de Joy deve ser maior ou igual a 50, e que, nesse caso, a fórmula é satisfeita sem precisar verificar nada nas sequências. • ({{CtrIn and CtrVars and JoyOrig < 50 and JoyDest <50}, EF {Joy ≥ 50}); Representando que, durante toda a transição, o ‘novo valor’ de Joy deve ser menor que 50, devido ao fato de ser menor do que 50 nos extremos, e que, nesse caso, ainda é preciso encontrar, no futuro, um instante no qual Joy≥ 50. O resultado da chamada ao algoritmo de satisfação nesse exemplo é mostrado na Figura 4.3. Nesta figura, as constraints já se encontram simplificadas, em sua forma final. As alternativas resultante são o retorno do algoritmo. Figura 4.3. Resultado da chamada ao algoritmo de satistafação de fórmula sobre transição. Detalha-se o funcionamento do algoritmo de acordo com o código. Primeiro, o algoritmo obtém os valores abstratos das propriedades dramáticas no estado de origem 54 (OrigVals) e no estado destino (DestVals) da transição T (linha 3), as quais são combinações lineares dos valores das propriedades dramáticas no estado inicial do autômato. Para tanto, é aplicado o algoritmo COLLECT_ABSTRACT_VALUES, que consulta a base utilizando o identificador único do evento E, o estado de origem ORIG e o estado destino DEST. Depois (linha 4), o algoritmo DEFINE_VARIATIONS calcula a variação abstrata sofrida por cada propriedade dramática ao longo da transição. São construídas então restrições representando essas variações, que são armazenadas em VariationCtrs. Essas restrições referem-se a variáveis novas criadas para representar os valores no estado de origem, no estado de destino e no meio do intervalo. Tais variáveis, definidas para todas as propriedades dramáticas, são listadas em IntervalVars, de modo que possam ser referenciadas pelas restrições das diferentes situações. Por fim (Algoritmo 4-8, linha 6), as alternativas são compostas de acordo com a semântica do operador de estados. Esta etapa é dependente do operador de estados SOp da fórmula Formula. A Tabela 3 mostra o tratamento dependente de operador. As alternativas de satisfação para cada operador são testadas e simplificadas juntamente com as restrições de entrada CtrIn e de variação ao longo do intervalo, VariationCtrs. Todas as alternativas consistentes geram situações cujas fórmulas residuais devem ser verificadas nas transições seguintes. 55 SOp Alternativas Expressão Residual Descrição true Fórmula satisfeita na transição. Expr deve valer em algum instante do intervalo. Nada mais vai precisar ser verificado em seguida. Formula Fórmula não satisfeita na transição. Expr não deve valer em momento algum do intervalo, o que é garantindo ao se forçar que a negação de Expr valha no estado de origem e de destino; nesse caso, a própria fórmula deve ser verificada no futuro. Formula Fórmula vale por toda a transição sem falhar, o que é garantindo ao se forçar que a Expr valha no estado de origem e de destino; Expr deve valer em todo o intervalo e é necessário continuar verificando a própria fórmula. false Fórmula não vale em algum momento da transição. Residual indica verificação de que fórmula não é válida. Before[orig] and Before[dest] and (NotAfter)[mid] Formula Before foi válida ao longo da transição; mas After não foi satisfeita. É necessário continuar verificando a própria fórmula. Before[orig] and Before[mid] and After[mid] true Before foi válida do início até algum instante da transição; e After valeu nesse instante. Nada mais precisa ser verificado em seguida. false Before não valeu em algum instante; e After não valeu no intervalo definido pelo início da transição e esse instante. Residual indica verificação de que fórmula não é válida. Expr[mid] F (NotExpr)[orig] and (NotExpr)[dest] Expr[orig] Expr[dest] and G (NotExpr)[mid] U (NotBefore)[mid] and (NotAfter[orig]) and (NotAfter)[mid] Tabela 4 Tabela 3. Tratamento de alternativas de acordo com operadores de estado. Na tabela, é utilizada a notação Expr[orig], Expr[dest] e Expr[mid] para designar, respectivamente, a expressão aplicada ao estado de origem, de destino ou a um determinado momento genérico ao longo do intervalo. Lembra-se que o operador U é 56 acompanhado de uma expressão Expr na forma (Before,After), descrevendo a necessidade de garantir que a restrição antecedente Before seja válida até o momento em que After valha. Desse modo, a classificação das situações analisa a validade de Before e de After. A notação Not Expr é usada para designar a negação da expressão Expr (e.g. a negação de Joy≥50 é Joy<50). 57 SOp Alternativas Expressão Residual Descrição true Fórmula satisfeita na transição. Expr deve valer em algum instante do intervalo. Nada mais vai precisar ser verificado em seguida. Formula Fórmula não satisfeita na transição. Expr não deve valer em momento algum do intervalo, o que é garantindo ao se forçar que a negação de Expr valha no estado de origem e de destino; nesse caso, a própria fórmula deve ser verificada no futuro. Formula Fórmula vale por toda a transição sem falhar, o que é garantindo ao se forçar que a Expr valha no estado de origem e de destino; Expr deve valer em todo o intervalo e é necessário continuar verificando a própria fórmula. false Fórmula não vale em algum momento da transição. Residual indica verificação de que fórmula não é válida. Before[orig] and Before[dest] and (NotAfter)[mid] Formula Before foi válida ao longo da transição; mas After não foi satisfeita. É necessário continuar verificando a própria fórmula. Before[orig] and Before[mid] and After[mid] true Before foi válida do início até algum instante da transição; e After valeu nesse instante. Nada mais precisa ser verificado em seguida. false Before não valeu em algum instante; e After não valeu no intervalo definido pelo início da transição e esse instante. Residual indica verificação de que fórmula não é válida. Expr[mid] F (NotExpr)[orig] and (NotExpr)[dest] Expr[orig] Expr[dest] and G (NotExpr)[mid] U (NotBefore)[mid] and (NotAfter[orig]) and (NotAfter)[mid] Tabela 4. Tabela de composição de alternativas por operador no caso da satisfação básica. 4.3.1.2 Satisfação de fórmulas aninhadas 58 Se a expressão interna é uma conjunção de restrições aritméticas com uma subfórmula quantificada, é necessário tratamento diferenciado. No momento, o único tipo de forma aninhada que está sendo tratado se refere a conjunções de relações aritméticas básicas com uma única sub-fórmula quantificada. Além disso, são tratadas subfórmulas aninhadas apenas quando o operador de estados é F ou G. Apresenta-se agora o algoritmo SATISFACTION_DEPEND. Esse algoritmo é descrito no Algoritmo 4-9. 1. SATISFACTION_DEPEND (E, OF, F, DP, T, L_Above) 2. OF= (QC,_,_), 3. para cada AltAbove em L_Above 4. AltAbove = (CtrAbove,ResidAbove) 5. se QC = F 6. se é possível definir uma sub-transição T’ de T com as restrições em CtrAbove 7. NT = T’ 8. senão 9. seja NAlt a alternativa AltAbove com a fórmula residual substituída por OF 10. L_ALTS+= [NAlt] 11. escape 12. senão, se QC = G 13. NT = T 14. L_Local ← SATISFACTION(E, CtrAbove, DP, F, NT) 15. L_Comb ← COMBINE_HIERARCHICAL_ALTERNATIVES(AltAbove,L_Local) 16 L_ALTS += L_Comb 17. retorna L_ALTS Algoritmo 4-9. Satisfaction_Depend. O objetivo desse tratamento é gerar as combinações de possibilidades: para cada alternativa da fórmula no nível superior, é gerada a satisfação da fórmula interna. Assim, a satisfação de uma fórmula aninhada gera todos os casos possíveis. Assume-se, no exemplo para este caso, a fórmula EF ({Joy ≥ 50} and AG {Joy ≥ 50}). Essa fórmula significa a restrição: “Há algum caminho no qual Joy é maior ou igual a 50 em algum instante, e a partir daquele instante, em todas as histórias possíveis a partir desse momento, Joy mantém-se maior ou igual a 50”. O resultado desejado pra esse exemplo é o seguinte: • Se há algum ponto ao longo da transição no qual Joy se torna maior ou igual a 50; o E se Joy se mantém maior ou igual a 50 até o fim da transição: 59 é necessário continuar verificando que, em todas as histórias possíveis, Joy não se torna menor que 50. Também é necessário considerar que, mesmo que a restrição seja satisfeita sobre essa transição, ela pode falhar no futuro. Assim, é necessário procurar outro ponto no futuro que satisfaça a fórmula original. o E Joy se torna menor que 50: a porção interna da fórmula não é satisfeita, e é necessário encontrar outro ponto no futuro que satisfaça a fórmula original. • Se não há algum ponto ao longo da transição no qual Joy se torna maior ou igual a 50, é necessário continuar procurando, nas transições futuras, um ponto que satisfaça a fórmula. O algoritmo SATISFACTION realiza um tratamento para a fórmula aninhada. Primeiro, a fórmula tem a expressão interna separada (Algoritmo 4-7, linha 9), e são compostas: • A fórmula superior, composta pelo quantificador mais geral e as restrições aritméticas diretamente relacionadas a ele. No exemplo: EF {Joy ≥ 50}. • A fórmula interna, relativa às restrições de um quantificador interno, possivelmente outra fórmula aninhada. No exemplo: AG {Joy ≥ 50}. A fórmula superior é usada em uma chamada recursiva ao algoritmo SATISFACTION. A Figura 4.4 mostra esse processo. 60 Figura 4.4. No tratamento de fórmulas aninhadas, a expressão interna é dividida. Uma chamada recursiva ao algoritmo de satisfação é realizada sobre a fórmula contendo a primeira parcela de conjunção original, resultando em uma lista de alternativas parciais. O resultado dessa chamada é uma lista de alternativas parciais, denominada L_Partial. Essa lista é então passada como parâmetro ao algoritmo SATISFACTION_DEPEND, que trata da satisfação da fórmula aninhada. A satisfação da fórmula interna é gerada em relação às alternativas da lista recebida como parâmetro. Ou seja, são coletadas as constraints necessárias para que a fórmula interna seja satisfeita (insatisfeita, não-satisfeita, etc.) em relação a cada possibilidade de resolução da fórmula superior. A Figura 4.5 mostra o funcionamento do algoritmo SATISFACTION_DEPEND, com o tratamento da primeira e segunda alternativas recebidas. A lista L_Partial é recebida pelo algoritmo SATISFACTION_DEPEND como L_Above. São realizadas novas chamadas ao algoritmo SATISFACTION para o tratamento de cada alternativa AltAbove recebida nessa lista. 61 Figura 4.5. Tratamento de fórmula interna de fórmula aninhada. As alternativas geradas na satisfação do primeiro termo da fórmula são recebidas como L_Above, e são utilizadas para gerar a satisfação da fórmula interna de forma hierarquicamente dependente. No exemplo da Figura 4.5, a transição t1 gera a transição t1.p1, representando a transição a partir de um ponto arbitrário p1 no qual Joy já foi maior ou igual a 50. Efetivamente, as restrições de tempo ‘herdadas’ pelas chamadas nesse nível definem uma parcela da transição na qual a fórmula interna deve ser satisfeita. Se a relação entre a fórmula e a parcela da transição for incoerente, a alternativa não é combinada. Por exemplo, no tratamento da segunda alternativa da Figura 4.5 – que representa que Joy foi menor que 50 ao longo de todo o intervalo - não há subintervalo sobre o qual testar AG {Joy ≥ 50}. Cada chamada nesse nível gera uma lista L_Local de alternativas de satisfação da fórmula interna, incluindo as próprias constraints. O algoritmo combina esta lista L_Local com a alternativa AltAbove sendo tratada e adiciona as alternativas resultantes L_Comb à lista final L_ALTS de alternativas. A combinação de alternativas é realizada pelo algoritmo COMBINE_HIERARCHICAL_ALTERNATIVES, que combina as constraints em conjunções e as residuais de acordo com o operador de estados da fórmula superior. As regras de composição aplicadas para a geração dessa lista L_Comb são dadas na Tabela 5. Nessa tabela, o símbolo Formula representa uma fórmula qualquer 62 diferente de true e false; e Original representa a fórmula original do algoritmo de satisfação (a fórmula aninhada completa). Residual da alternativa Residual resultante: Residual da Operador de estados mais geral alternativa local superior F G false Formula - false Formula false Original false true Formula Formula or Original - Formula true Formula or Original Original Formula Formula - Original Tabela 5. Tabela de composições de resultados de alternativas hierárquicas. As regras de composição demonstradas na tabela consideram as seguintes exigências: • Fórmulas com o operador mais geral F não podem falhar: ou a fórmula foi satisfeita em algum ponto ou ainda pode ser satisfeita no futuro. Assim, substitem-se nas alternativas finais as fórmulas residuais false pela fórmula original. • Fórmulas com o operador mais geral F podem precisar ser verificadas no futuro, mesmo que as restrições pontuais já tenham valido. Essa alternativa representa o caso no qual a restrição pontual (associada ao operador F) vale ao longo da transição atual, mas falha em algum ponto posterior, durante a transição ou posteriormente. Nesse caso, é necessário procurar um novo ponto no qual a restrição pontual vale. A cada alternativa é adicionada na fórmula residual a fórmula original em disjunção. • Fórmulas com o operador mais geral G podem falhar ou precisar ser garantidas no futuro, não podendo ser satisfeitas absolutamente: substituem-se nas alternativas finais todas as fórmulas residuais que não são false pela fórmula original. A segunda alternativa em L_Above não gera uma lista local. Essa alternativa é então incluída diretamente na lista L_ALTS, tendo sua fórmula residual substituída pela fórmula original. 63 As alternativas em L_Partial correspondem às possibilidades de continuação desejadas. Nota-se que estas alternativas correspondem às continuações desejadas listadas anteriormente. Descreve-se agora o algoritmo em relação ao código. O algoritmo recebe como parâmetros de entrada: • o identificador do evento E; • a fórmula superior AboveF; • a fórmula interna F, a ser satisfeita de forma dependente às alternativas de satisfação da fórmula superior; • o conjunto de variáveis representando as propriedades dramáticas DP; • a transição atual T; • a lista de alternativas L_Above, geradas pela satisfação de AboveF na transição T. O algoritmo retorna uma lista de alternativas L_ALTS que define todas as possibilidades de satisfação da fórmula aninhada. Na linha 2, o algoritmo inicia o ciclo de tratamento de todas as alternativas AltAbove em L_Above. Caso a alternativa AltAbove selecionada não defina uma transição T’ válida sobre a qual verificar a fórmula interna F (linha 8), essa alternativa é adicionada aos resultados tendo sua fórmula residual substituída pela fórmula superior (linhas 9 e 10). Caso contrário (linha 4), é feita uma chamada interna ao algoritmo SATISFACTION passando-se a fórmula F e a transição T’ como parâmetros. Essa chamada resulta em uma lista de alternativas L_Local, que é parâmetro de entrada para o algoritmo COMBINE_HIERARCHICAL_ALTERNATIVES. O algoritmo COMBINE_HIERARCHICAL_ALTERNATIVES (linha 6) combina a alternativa AltAbove da fórmula superior com as alternativas no nível atual L_Local. As restrições das alternativas são compostas em uma conjunção, e as residuais são combinadas segundo regras de composição. O resultado desse processo é uma lista L_Comb de alternativas, que é adicionada à lista final L_Partial. 4.4 Consulta Cada verificação de fórmula para um certo tipo de evento gera um conjunto de resultados R indexado por uma dupla (Ev, α), onde Ev é a especificação abstrata de um 64 evento e α é uma fórmula CTL-estendida com apenas um quantificador mais geral. Em tempo de planejamento, é preciso consultar esses resultados diante do valor das propriedades dramáticas e de contexto. Desse modo, neste trabalho foi implementado também o mecanismo de consulta que fornece as fórmulas residuais para uma dada situação. O processo de consulta recebe o estado do mundo, o valor corrente das propriedades dramáticas a serem consideradas, a indicação do evento instanciado e uma fórmula temporal sobre as propriedades dramáticas a ser verificada. Com base nessas informações, são recuperadas na estrutura os pares (Situação, Residual) que foram gerados pelo preprocessamento para o evento e a fórmula informada. Com base no valor corrente das propriedades dramáticas, é selecionada a fórmula residual. Tal fórmula, é uma conjunção de triplas (Sf, RCtx, Expr), onde Sf identifica um dos estados finais do evento, RCtx contém um conjunto de restrições sobre as propriedades de contexto que devem ser verificadas para que a tripla seja considerada, e Expr é uma fórmula estendida a ser verificada a partir do estado final Sf identificado. Com base no estado do mundo, a fórmula residual é inspecionada para se saber quais triplas têm as restrições de contexto atendidas. Quando não são atendidas, a tripla é desconsiderada, não influenciando o resultado de conjunções e disjunções. Após esse processamento, sabem-se os estados finais do eventos que podem ser atingidos. Além disso, simplificações adicionais são feitas na expressão, uma vez que, com a avaliação das restrições sobre propriedades de contexto, novas simplificações de fórmula tornamse possíveis. A expressão final a ser verificada a partir do evento é retornada como a fórmula com conjunções e disjunções de duplas (Sf, Expr), indicando o que precisa valer a partir de cada estado final para que a fórmula de entrada seja satisfeita. O Algoritmo 4-10 descreve o processamento 65 1. CONSULT(Ev, F, S, Result) 2. F = (PQ,_,_) 3. R ← INDEX(Ev,F) 4. DPVal ← DRAMPROPVALUES(S) 5. para cada resultado Res em R 6. Res = (Ctr,Expr) 7. se Ctr é satisfeito em relação a DPVal 8. (L_Elems, ExprElems) ← EXPRELEMS(Expr) 9. para cada elemento Elem em L_Elems 10. Elem = ((Sf,RCtx,Resid), ElemVar) 11. se RCtx é satisfeito em relação a S 12. ExprElems ← SUBSTITUTE(ExprElems,ElemVar,(Sf,Resid)) 13. senão 14. se PQ = A 15. ExprElems ← SUBSTITUTE(ExprElems,ElemVar,true) 16. se PQ = E 17. ExprElems ← SUBSTITUTE(ExprElems,ElemVar,false) 18. retorna ExprElems 19. retorna false Algoritmo 4-10. Consult. 66 5 Resultados e avaliação Neste capítulo apresentam-se os resultados gerados pela implementação do modelo e dos algoritmos expostos no capítulo anterior. Avalia-se os resultados em relação a dois quesitos principais. São eles: a capacidade de expressão provida pelo modelo; e a análise dos tempos computacionais para a verificação e consulta de resultados. Em relação à expressão provida pelo modelo, é tratada a lógica temporal proposta por (ARAÚJO, 2011), apresentada na seção 2.4.1. A Tabela 6 mostra algumas restrições que podem ser expressas em fórmulas consideradas na implementação. Restrição Fórmula Existe a possibilidade de haver um ponto EF{Joy≥100 } com a felicidade muito alta ao longo da história. Em todas as histórias possíveis, não há A{Romance =0}U{Joy≥60 } romance até que a felicidade seja alta. Existe a possibilidade de que a história EF({Romance=0}and tenha, em algum ponto, nenhum (A {Romance<30}U{Joy ≥60 })) romance; e que, a partir desse ponto, o romance é sempre baixo até que a felicidade seja alta. Há a possibilidade de que haja felicidade EF({Joy>50 and Romance<30} and sem romance em algum momento, e um (EF{Romance≥50} and momento posterio no qual há romance e, (AG{Romance≥Tension} and a partir de então o romance seja sempre (A end{Joy>50})))) maior que a tensão, que é sempre alta, até que seja alcançado um final feliz. Tabela 6. Exemplos de restrições e fórmulas equivalentes representadas no modelo. 67 Cabe notar que o modelo de conteúdo permite ainda que a variação abstrata das propriedades dramáticas seja dada por expressões lineares envolvendo os valores de outras propriedades. Ou seja, o modelo permite que o valor de uma propriedade dependa também dos valores de uma ou mais propriedades diferentes (seção 3.1.3). Assim, é possível expressar interdependência entre as propriedades dramáticas. Relembra-se o exemplo do evento Try to Kidnap, apresentado na seção 3.1.3: no final no qual o vilão não consegue raptar a vítima, o valor da felicidade da história é incrementado de acordo com o o valor inicial da tensão, representando a resolução ‘feliz’ da tensão dramática acumulada. Para efeito de implementação, assume-se a limitação de que as fórmulas internas (aninhadas) também devem possuir apenas um quantificador mais geral. Uma fórmula interna nesse formato pode conter uma conjunção de restrições aritméticas sobre propriedades dramáticas em conjunção com uma única fórmula com um quantificador mais geral. Isso permitiu uma implementação recursiva (seção 4.3), conforme explicado na descrição do algoritmo de satisfação (Algoritmo 4-7). Essa restrição não é, no entanto, obrigatória no modelo. Apesar da limitação imposta, considera-se que as fórmulas que podem ser expressas nesse formato provêm um bom poder de expressão para aplicação no contexto de Storytelling interativo. Os exemplos na Tabela 6 demonstram restrições que podem ser expressas nesse formato. Nota-se que a limitação a apenas um quantificador mais geral por nível não interfere na capacidade da lógica de expressar restrições sequenciais (nas quais algo deve valer em um momento, e outra restrição deve valer a partir daquele ponto). Além disso, cabe salientar que a implementação não admite fórmulas com disjunção interna entre as restrições aritméticas sobre propriedades dramáticas. Relembra-se que o tratamento de restrições que devem valer ao longo de um intervalo é realizado aplicando-se a restrição aos limites desse intervalo. Ou seja, considerando que, dado que as variações das propriedades dramáticas são lineares, algo que vale em um intervalo deve obrigatoriamente valer no começo e no fim daquele intervalo. Restrições representadas com fórmulas com disjunção interna, no entanto, tais como fórmulas do tipo AG(α or β), não podem ser tratadas desta maneira. Uma alternativa para tratar esse tipo de fórmula seriam mecanismos de dupla negação, ou 68 seja, verificar, por exemplo, o que é necessário para que AG(α or β) valha através da verificação do que é necessário para que EF(¬α and ¬ β) não valha. A implementação de mecanismos de verificação abstrata para tal não chegou, no entanto, a ser investigada. Para demonstrar o poder de expressão do modelo implementado, é apresentado um exemplo, com os respectivos resultados gerados. Demonstra-se o resultado da verificação de fórmulas sobre um evento específico não determinístico do gênero Swords and Dragons: Fight to the Death. Figura 5.1. Autômato descrevendo as possíveis execuções de dramatização do evento Fight to the Death. 69 Demonstra-se no autômato a variação das propriedades Joy (a felicidade da história) e Fear (o nível de medo). No evento, há três estados finais possíveis: s2, s3 e s4. Além disso, devido à restrição na transição que leva de s1 para s2, o caminho até um final pode ser condicionado a restrições sobre propriedades de contexto1. A árvore de execução TFight to the Death gerada a partir do autômato do evento Fight to the Death é dada na Figura 5.2. As durações das transições são suprimidas, bem como informações sobre os caminhos até as folhas (o componente EndPaths de cada transição da árvore). Esta árvore assume uma duração máxima para o evento de 60 segundos. Figura 5.2 Árvore de execução gerada a partir do autômato do evento Fight to the Death. 1 A restrição, representada na Figura 5.1 pelo termo [a], representa que o personagem defensor B não gosta do personagem A, e portanto não evita matá-lo. Essa restrição existe pois, nas histórias de Swords and Dragons, um personagem pode atacar outro que não lhe deseja mal. Por exemplo: caso um bom cavaleiro A ataque (por estar amaldiçoado, ou ter sido enganado, etc.) um outro cavaleiro B, o cavaleiro defensor B tenta vencer a luta sem matá-lo (e, tragicamente, invariavelmente acaba morto). 70 Os resultados para essa verificação são dados na Tabela 7. Situação Expressão: (Ctr) (RCtx, Sf, Resid) {Joy0≥50.0, ([a],s2,EG{Fear>Joy}) or Fear0 > Joy0} ([],s3,EG{Fear>Joy}) or ([],s4,EG{Fear>Joy}) or ( ([a], s2, AF({Joy≥50.0} and EG{Fear>Joy})) and ([], s3, AF({Joy≥50.0} and EG{Fear>Joy})) and ([], s4, AF({Joy≥50.0} and EG{Fear>Joy})) ) {Joy0≥50.0, ([a],s2,EG{Fear>Joy}) or Fear0 ≤ Joy0, ([],s3,EG{Fear>Joy}) or Fear0+10>Joy0} ([],s4,EG{Fear>Joy}) {Joy0≥50.0, ([a], s2, AF({Joy≥50.0} and EG{Fear>Joy})) and Fear0≤0.68*Joy0+18.18} ([], s3, AF({Joy≥50.0} and EG{Fear>Joy})) and ([], s4, AF({Joy≥50.0} and EG{Fear>Joy})) {Joy0 < 50.0} ([a], s2, AF({Joy≥50.0} and EG{Fear>Joy})) and ([], s3, AF({Joy≥50.0} and EG{Fear>Joy})) and ([], s4, AF({Joy≥50.0} and EG{Fear>Joy})) Tabela 7. Resultados da verificação de AF ({Joy ≥ 50} and EG {Fear ≥ Joy }) sobre o evento Fight to the Death. A implementação dos algoritmos foi gerada na linguagem programação em lógica Prolog; utilizando-se o interpretador SWI-Prolog (para o processo de verificação) e o interpretador SICStus Prolog (para a consulta). Em ambos os casos, utilizou-se a biblioteca de programação em lógica com restrições CLP(R) (que possui versões para ambas as distribuições Prolog utilizadas) para o tratamento da variação abstrata das propriedades dramáticas. Todos os testes foram realizados em um computador pessoal HP Pavilion dv6 Notebook PC, com processador Intel(R) Core(TM) i7-2670QM 2.20GHz e 8GB de memória RAM. Como os tempos de execução para o algoritmo de verificação são consideráveis, o algoritmo do processo exaustivo de verificação (Algoritmo 4-1) foi modificado para realizar a contagem do tempo. Foi gerado o preprocessamento para o gênero Swords and Dragons que é uma extensão do proposto por (SILVA, 2011), tendo sido criados autômatos específicos para 71 a dramatização de cada um dos eventos. Sobre os eventos desse gênero foram verificadas as seguintes restrições típicas: • Há a possibilidade da história ser feliz em algum instante; representada pela fórmula EF {Joy ≥ 70}; • O nível de tensão, em todas as histórias possíveis, nunca é muito baixo; representada pela fórmula AG {Tension > 40}; • O nível de tensão, em todas as histórias possíveis, nunca é muito alto; representada pela fórmula AG {Tension < 80}; • Existe pelo menos uma história na qual a alegria se torna alta e, a partir de então, em pelo menos uma história, não fica nunca muito baixa; representada pela fórmula EF ({Joy ≥ 60 } and EG {Joy ≥ 35}). O tempo de verificação para esse conjunto de quinze eventos foi de 4 horas e 20 minutos, com alta variação no tempo necessário para a geração dos resultados para um evento. A demora do processo se deve à explosão combinatorial intrínseca ao processo de verificação abstrata: para cada árvore de execução, em cada transição, são geradas múltiplas alternativas de continuação (que dividem as situações). Fórmulas mais complexas (com maior aninhamento) geram mais alternativas, e portanto são mais custosas. O tempo para a verificação de um evento aumenta de acordo com a profundidade da árvore devido ao aumento da constraint store. Conforme a constraint store se torna carregada, as operações sobre as constraints e sobre os resultados que as contêm se tornam mais custosos. O tempo para esse geração poderia ser ainda maior, em domínios nos quais os eventos são mais numerosos, complexos, ou longos (com árvores mais profundas). Esse alto custo computacional é mitigado, no modelo, dada a natureza offline do processo de verificação. Além disso, o problema é inerentemente paralelizável: além de verificar cada restrição típica sobre cada evento em uma chamada em paralelo, também seria possível verificar cada alternativa sobre cada sub-árvore em um processo em separado. O objetivo do modelo é permitir que o planejamento possa compor enredos utilizando eventos nos quais há variação contínua de propriedades dramáticas, considerando restrições sobre essas variações. Com o preprocessamento gerado pela verificação offline, os resultados gravados podem ser consultados em tempo de processamento. Relembra-se os resultados exemplo da Tabela 7. Considerando uma 72 base que contém estes resultados, as consultas são realizadas em tempo igual ou inferior a 1 milisegundo. Os resultados do processo de verificação para o gênero de Swords and Dragons foram utilizados com sucesso em uma implementação especializada do planejador mais atual do Logtell (FERREIRA, 2013). Nos testes de planejamento utilizando os resultados para o gênero Swords and Dragons, são realizadas múltiplas consultas ao conjunto de resultados, com tempo médio para cada consulta de 0,01s. Os resultados indicam que a aplicação do modelo é viável no planejamento de histórias para Storytelling interativo. Assim, constata-se que é viável o tratamento de variação contínua de propriedades dramáticas, utilizando os resultados preprocessados produzidos pelos algoritmos implementados neste trabalho. 73 6 Conclusões e Trabalhos Futuros 6.1 Considerações Gerais Esta dissertação trata da verificação de propriedades sobre eventos de storytelling interativo modelados como autômatos não determinísticos. O objetivo do modelo proposto é possibilitar que um processo de planejamento automatizado considere a variação contínua de propriedades ao longo de eventos sem precisar analisálos internamente. Os algoritmos para a validação do modelo de conteúdo e de verificação foram implementados para aplicação no sistema Logtell. Os resultados da dissertação, no entanto, são independentes, podendo ser aplicados em outros sistema de Storytelling Interativo dado que os pontos principais da hipótese sejam garantidos. São eles: • conhecimento do conjunto de eventos que podem ser utilizados para compor a história; • conhecimento da variação das propriedades dramáticas ao longo desses eventos, definidas como expressões lineares sobre valores iniciais; conhecimento das restrições típicas sobre essas propriedades, expressas em fórmula temporal CTL-estendida; e, por fim • a possibilidade de realizar o processo (computacionalmente custoso) de verificação de modo offline. O modelo proposto e os algoritmos implementados são, portanto, independentes de contexto, podendo ser aplicados em quaisquer sistemas de storytelling que representem as propriedades dramáticas e suas restrições na lógica CTL-estendida. O modelo é capaz de representar e raciocinar sobre quaisquer conjuntos de propriedades, desde que os eventos contenham a informação sobre sua variação; e desde que sejam conhecidas as restrições típicas para as histórias daquele gênero. A verificação realizada pelo modelo é exaustiva, no sentido de que garante que o 74 planejamento não necessitará de resultados que não foram previamente gerados. O modelo e os algoritmos implementados garantem, portanto, a coêrencia entre o conjunto de restrições típicas e as possíveis consultas. Isso é garantido pelo tratamento que adiciona as fórmulas residuais de uma verificação ao conjunto de fórmulas a verificar, durante o processo de verificação em alto nível. O alto custo computacional para o processo de verificação é mitigado pela sua natureza offline. Os resultados da verificação sobre um gênero são reutilizáveis, servindo para todas as gerações de enredos futuras naquele gênero. O gênero pode ser atualizado com novas fórmulas típicas (por exemplo, por nova inferência de preferências de usuários); e apenas as novas fórmulas (e suas possíveis residuais) precisam ser verificadas, em nova rodada do algoritmo, tendo os resultados adicionados ao conjunto de resultados para aquele gênero. A atualização de eventos, no entanto, com a modificação da variação das propriedades contínuas, implica na necessidade de reverificar novamente todas as fórmulas em relação ao evento modificado. Os resultados gerados pelo processo de verificação são então utilizados pelo planejamento, para composição de enredos. Os resultados indicam que a consideração de restrições sobre a variação contínua de propriedades dramáticas em eventos não determinísticos é possível, nesse modelo. O tempo necessário para realizar o processo de consulta não impacta significativamente no tempo necessário para o planejamento de enredos. 6.2 Principais Contribuições Os resultados obtidos indicam a viabilidade de um tratamento offline para possibilitar que o planejamento de enredos considere restrições sobre propriedades dramáticas, que variam continuamente, ao longo de eventos não determinísticos. Como principal contribuição do trabalho, tem-se o modelo e os algoritmos desenvolvidos. O modelo de conteúdo permite a representação de propriedades dramáticas com variação contínua ao longo de eventos não determinísticos, a expressão de restrições típicas sobre estas propriedades em histórias de um gênero, e fundamenta tanto o processo de verificação quanto a dramatização. Os algoritmos desenvolvidos realizam a verificação abstrata das propriedaes dramáticas com variação contínua, produzindo resultados a serem utilizados pelo processo de planejamento para viabilizar a consideração de restrições temporais sobre 75 essas propriedades. Dada a natureza genérica do modelo, os algoritmos podem ser aplicados em domínios diversos. Desde que sejam garantidos os pontos principais da hipótese, os algoritmos podem ser utilizados para gerar a verificação exaustiva de restrições conhecidas sobre um conjunto de eventos nos quais propriedades variam continuamente. Foi implementado um protótipo, para aplicação no domínio de Storytelling Interativo, associado ao sistema de Storytelling Interativo independente de contexto Logtell. A utilização do protótipo demonstra a viabilidade da geração de enredos não determinísticos, respeitando os limites de tempo impostos pelo ciclo de geraçãodramatização em paralelo. Com o uso do protótipo associado ao planejador mais atual do sistema Logtell (FERREIRA, 2013), o processo de geração produz histórias satisfazendo restrições complexas sobre a variação de propriedades dramáticas, utilizando os resultados da verificação offline. Este protótipo serve de base de testes e indica possíveis aprimoramentos a serem aplicados no modelo, descritos na seção a seguir. 6.3 Trabalhos Futuros O trabalho pode ser complementado, em diversos aspectos, por desenvolvimentos futuros adicionais. O primeiro ponto a ser explorado deve ser a completude da gramática da lógica CTL-estendida, buscando prover maior poder de expressão autoral. Para tanto, é necesário definir um algoritmo de satisfação que permita o tratamento de fórmulas com mais de um quantificador mais geral por nível. A resolução deste problema relaciona-se a outra restrição assumida neste trabalho, que também pode ser futuramente eliminada: o tratamento de disjunções internas nas restrições de fórmulas. Para tanto, é necessário que esse tratamento não incorra em custos computacionais adicionais significativos que inviabilizem o processo. Também relacionado ao poder de expressão provido pelo modelo, a gramática da lógica CTL-estendida pode ser incrementada com novos operadores. Aproveitandose da característica de tratamento de tempo contínuo, propõe-se a definição de operadores de estado que tratam de restrições concomitantes e ‘janelas de tempo’: 76 • W: operador while, aplicado sobre os termos (α,β) na forma (α W β). Definindo que a restrição α deve ser garantida sempre que se verifica β, como uma forma alternativa de expressar relações until sem a necessidade de negação; • D: operador during, aplicado sobre os termos (α, n) na forma (α D n). Define que a restrição α deve ser garantida por n segundos. O processo de verificação pode ser otimizado através da aplicação de simplificações nas constraints adicionadas à constraint store. Como o tamanho da constraint store acarreta em um maior tempo de processamento, as chamadas ao algoritmo de verificação em árvores de execução mais profundas acabam por tomar um tempo muito maior do que em árvores menores. O mecanismo para essa simplificação seria a verificação de consequências lógicas: se um conjunto de constraints é consequência lógica de um outro, apenas o primeiro precisa ser afirmado. A simplificação de constraints pode também otimizar os processos de composição, diminuindo o número de resultados distintos. As combinações multiplicam o número de resultados, o que pode fazer com que composições de grandes conjuntos tomem um tempo significativo. Essa simplificação pode ser realizada quando situações distintas, dadas por conjuntos de constraints distintas, resultam na mesma expressão de resultado (mesmas fórmulas residuais a serem verificadas a partir dos mesmos finais). Para tanto, podem ser aplicadas técnicas de regras de manipulação de constraints (constraint handling rules) para agrupar os resultados em um mesmo intervalo quando possível. Essa simplificação implicaria também em uma potencial melhora no processo de consulta, já que, havendo menos resultados a considerar, o tempo médio para determinar qual é a situação aplicável potencialmente diminui. Outra otimização que pode ser aplicada referente ao processo de consulta é a composição dos resultados em uma estrutura que facilita a busca do resultado aplicável no estado corrente do mundo. Relembra-se que as alternativas geradas a cada etapa do algoritmo de verificação representam situações mutuamente exclusivas, e diferentes resultados gerados a partir de uma mesma alternativa compartilham parte das restrições associadas a eles. Assim, o processo de consulta pode ter de afirmar diversas vezes o mesmo conjunto de restrições até encontrar o resultado aplicável no estado do mundo corrente. 77 A organização dos resultados em relação às constraints que compartilham, de forma hierarárquica (como em uma árvore de decisões), potencialmente diminuiria o número de constraints a serem afirmadas em cada resultado; e assim também diminuiria o tempo médio para a realização das consultas. O protótipo implementado pode ser aprimorado em relação ao seu uso, promovendo maior coêrencia entre os níveis lógico e de dramatização. A utilização do modelo proposto pode fornecer informação sobre a variação das propriedades dramáticas aos módulo de dramatização do Logtell, de forma que elementos gráficos e sonoros (posição da câmera, iluminação, música) possam ser adaptados de acordo com essa variação, de acordos com modelos sugeridos em (LIMA et al., 2009a; LIMA et al., 2009b; LIMA et al., 2010; LIMA et al., 2011; LIMA et al., 2012a; e LIMA et al., 2012b). Por fim, aproveitando-se da abordagem genérica do modelo, pode-se pensar na aplicação do modelo de verificação offline de restrições sobre propriedades com variação contínua em domínios diversos. Quaisquer sistemas nos quais eventos não determinísticos precisam ser combinados através de planejamento automatizado, considerando a variação contínua de propriedades, podem aproveitar-se do modelo e dos algoritmos propostos. Exemplos de contextos onde isso ocorre são sistemas que envolvem processos físicos com variáveis contínuas que precisam ser devidamente controladas. 78 7 Referências ALUR, R.; HENZINGER, T.A.; HO, P.-H., 1993, “Automatic Symbolic Verification of Embedded Systems”. In: Proceedings of the 14th Annual Real-Time Systems Symposium (RTSS). IEEE Computer Society Press, 1993, pp. 2-11 (1993). ARAÚJO, E.T., CIARLINI, A.E.M., 2011, “Verification of Temporal Constraints in Continuous Time on Nondeterministic Stories”. In: Proceedings of the 10th International Conference on Entertainment Computing, pp. 28-34, Vancouver, Oct. ARAÚJO, E.T., 2011, Verificação de Restrições Temporais com Tempo Contínuo em Histórias Não-Determinísticas. Dissertação de M.Sc., Departamento de Informática, Universidade Federal do Estado do Rio de Janeiro, RJ, Brasil. ARISTÓTELES., BUTCHER, S.H., 2011, The Poetics. 1 ed. Seattle, CreateSpace Independent Publishing Platform. AYLETT, R., DIAS, J., PAIVA, A., 2006, “An Affectively Driven Planner for Synthetic Characters”. In: ICAPS, Cumbria, UK, p.2-10, AAAI. BARROS, L.M., MUSSE, S.R., 2008, “Towards consistency in interactive storytelling: Tensão arcs and dead-ends”, Computers in Entertainment, v. 6, n. 3 (Oct), article n. 43. BENFORD, S., GIANNACHI, G., 2008, “Temporal trajectories in shared interactive narratives”. In: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, Florence, Italy, pages 73--82, ACM. BOUYER, P., 2009, “Model-Cheking Timed Temporal Logics”. Electron. Notes Theoretical Computer Science, 231:323-341. BRANIGAN, E., 1992, Narrative Comprehension and Film. 1 ed. New York, Routledge. CAMANHO, M. M., 2009, “Conciliando coerência e responsividade em storytelling interativo 79 para TV digital.”. Dissertação de M.Sc., Departamento de Informática, Universidade Federal do Estado do Rio de Janeiro, RJ, Brasil. CAMANHO, M.M., CIARLINI, A.E.M., FURTADO, A.L., et al., 2009, “A model for Interactive TV Storytelling”. In: Proceedings of the 7th Brazilian Symposium on Games and Digital Entertainment. Rio de Janeiro, Brasil. CATALDI, M., DAMIANO, R., LOMBARDO, V., et al., 2011, “Representing Dramatic Features of Stories through an Ontological Model”. In: Proceedings of the Fourth International Conference on Interactive Digital Storytelling, pp. 122-127, Vancouver, Nov. CHARLES, F., IBÁÑEZ, M.L., MEAD, S. J., et al., 2003, “Planning formalisms and authoring in Interactive Storytelling”. In: Proceedings of TIDSE’03: Technologies for Interactive Digital Storytelling and Entertainment, Darmstadt, Alemanha. CHEONG, Y.G., YOUNG, R.M., 2008, “Narrative Generation for Suspense: Modeling and Evaluation”. In: Proceedings of the 1st Joint International Conference on Interactive Digital Storytelling, pp. 144-155, Erfurt, Nov. CHEONG, Y.G., 2007, A Computational Model Of Narrative Generation For Suspense. Ph.D. thesis, Department of Computer Science, North Carolina State University, Raleigh, North Carolina, USA. CHRISTEL, B., KATOEN, J., 2008, “Principles of Model Checking”. MIT Press. CIARLINI, A.E.M, CASANOVA, M.A., FURTADO, A.L., et al., 2010, “Modeling interactive storytelling genres as application domains”, Journal of Intelligent Information Systems, v. 35, n. 3 (Dec), pp. 347-381. CIARLINI, A.E.M., CAMANHO, M.M., DÓRIA, T.R., et al., 2008, “Planning and Interaction Levels for TV Storytelling”. In: Proceedings of the 1st Joint International Conference on Interactive Digital Storytelling, pp. 198-209, Erfurt, Nov. CIARLINI, A.E.M., POZZER, C.T., FURTADO, A.L., et al., 2005, “A logic-based tool for interactive generation and dramatization of stories”. In: Proceedings of the 2nd International Conference on Advances in Computer Entertainment Technology, pp. 133-140, Valencia, Jun. CIARLINI, A.E.M., 1999, Geração Interativa De Enredos. Tese de D.Sc., Departamento de Informática, Pontifícia Universidade Católica, RJ, Brasil. 80 CLARKE, E. M., EMERSON, E. A., 1981, “Design and Synthesis of Synchronization Skeletons Using Branching Time Temporal Logic”. In: IBM Logics of Programs Workshop, Springer LNCS #131, pp.5-71. CLARKE, E. M., EMERSON, E. A., 1986. “Automatic Verification of finite-state concurrent systems using temporal logic specifications”. In: ACM Transactions on Programming Languages and Systems 8:244-263. DÓRIA, T.R., CIARLINI, A.E.M., ANDREATTA, A., 2008, “A nondeterministic model for controlling the dramatization of interactive stories”. In: Proceedings of the 2nd ACM Workshop on Story Representation, Mechanism and Context, pp. 21-26, Vancouver, Oct. EMERSON, E. A., 2009, “Model Checking: Progress and problems”. In: VMCAI – Verification, Model Checking and Abstract Interpretation. EMERSON, E. A., 1995, “Temporal and Modal Logic”. In: Handbook of Theoretical Computer Science. Elsevier. FERREIRA, P., 2013, “Planejamento de Histórias não Determinísticas com Propriedades Dramáticas em mudança contínua”. Dissertação de M.Sc., Departamento de Informática, Universidade Federal do Estado do Rio de Janeiro, RJ, Brasil. FERREIRA, P., GOTTIN, V.M., CIARLINI, A.E.M., et al., 2013, “A Nondeterministic Temporal Planning Model for Generating Narratives with Continuous Change in Interactive Storytelling”. In: Proceedings of the 9th AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment. No prelo. GERVÁS, P., 2009, “Computational Approaches to Storytelling and Creativity”, AI Magazine, v. 30, n. 3 (Sep), pp. 49-62. GILROY, S., PORTEOUS, J., CHARLES, F., et al., 2012, “Exploring Passive User Interaction for Adaptive Narratives”. In: Proceedings of the Proceedings of the 17th International Conference on Intelligent User Interfaces, pp. 119-128, New York, Feb. GRUMBER, O., VEITH, H. (org)., 2006, “25 Years of Model Checking”, Symposium. Federated Logic Conference, Seattle. HARTSOOK, K., ZOOK, A., DAS, S., et al., 2011, “Toward Supporting Stories with Procedurally Generated Game Worlds”. In: Proceedings of the IEEE Conference on Computational Intelligence and Games, pp. 297-304, New York, Sep. 81 KARLSSON, B., CIARLINI, A. E. M., FEIJÓ, B., FURTADO, A. L., 2006. “Applying a plan-recognition/plan-generation paradigm to interactive storytelling”. In: ICAPS 2006 - Workshop on AI Planning for Computer Games ans Synthetic Characters. KING, J. C., 1976, “Symbolic execution and program testing”. In: Communications of the ACM 19, 7:385-394. KOZEN, D., 1983, “Results on the propositional µ-calculus”. In: Thoretical Computer Science, v.27, 3:333-354. KONUR, S., 2008, “Real-time and Probabilistic Temporal Logics: An Overview”. Department of Computer Science, University of Liverpool. KRIEGEL, M., AYLETT, R., DIAS, J, et al., 2007, “An Authoring Tool for an Emergent Narrative Storytelling System”. Heriot-Watt University, Edinburgh; and INESCID IST, Taguspark, Porto Salvo, Portugal. LIMA, E. S, POZZER, C. T., D’ORNELLAS, M. C., et al., 2009, “Support Vector Machines for Cinematography Real-Time Camera Control in Storytelling Environments”. In: VIII Brazilian Symposium on Games and Digital Entertainment (SBGAMES 2009), Rio de Janeiro, Brazil, p. 44-51. LIMA, E. S., POZZER, C. T., D’ORNELLAS, M. C., et al., 2009, “Virtual Cinematography Director for Interactive Storytelling”. In: Proceedings of the International Conference on Advances in Computer Entertainment Technology (ACE 2009), Athens, Greece, p. 263-270. LIMA, E. S., POZZER, C. T., FEIJÓ, B., et al, 2010, “Director of Photography and Music Director for Interactive Storytelling”. In: IX Brazilian Symposium on Games and Digital Entertainment (SBGAMES 2010), Florianópolis, Brazil, p. 122-131. LIMA, E.S., FEIJO, B., BARBOSA, S., et al., 2011, “Draw Your Own Story: Paper and Pencil Interactive Storytelling”. In: 10th International Conference on Entertainment Computing (ICEC 2011), Vancouver, Canada. p. 1-12. LIMA, E.S., FEIJO, B., POZZER, C.T., et al., 2012, “Social Interaction for Interactive Storytelling”. In: Proceedings of the 11th International Conference on Entertainment Computing, pp. 1-15, Bremen, Sep. LIMA, E.S., FEIJO, B., FURTADO, et al., 2012, “Automatic Video Editing For VideoBased Interactive Storytelling”. In: Proceedings of the 2012 IEEE International Conference on Multimedia and Expo (ICME 2012), Melbourne, Australia, p. 806-811. 82 LIMBERGER, R., POZZER, C. T., FEIJÓ, B., et al., 2010. “Um Modelo de Diretor para Personagens Figurantes em Narrativa Interativa”. In: IX Brazilian Symposium on Games and Digital Entertainment (SBGAMES 2010), Florianópolis, Brazil, p. 141-144. MAGERKO, B., 2007, “Measuring Dramatic Believability”. In: Proceedings of the AAAI Fall Symposium, pp. 79-82, Menlo Park, Nov. MARRIOT, K., STUCKEY, P.J., 1998, Programming with Constraints. 1 ed. Cambridge, The MIT Press. MATEAS, M., STERN, A., 2005, “Structuring Content in The Façade Interactive Drama Architecture”. In: Proceedings of the 1st AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment. MCMILLAN, K.L., 1993, Symbolic Model Checking. 1 ed. Dordrecht, Kluwer Academic. O’NEIL, B., RIEDL, M., 2011, “Toward a computational framework of suspense and dramatic arc”. In: Proceedings of the International Conference on Affective Computing and Intelligent Interaction, pp. 246-255, Memphis, Oct. ØHRSTRØM, O., HASLE, P. F. V., 1995, “Temporal logic: from ancient ideas to artificial intelligence”. Springer. PETTA, P. IRIS publication database on Interactive Storytelling. Disponível em: <http://iris.ofai.at:7777/iris_db/index.php/>. Acesso em: 21 setembro 2013. PIZZI, D., 2011, Emotional Planning for Character-based Interactive Storytelling. Ph.D. dissertation, School of Computing, Teesside University, Middlesborough, UK. PIZZI, D, CAVAZZA, M., WHITTAKER, A., et al., 2006, “Automatic Generation of Game Level Solutions as Storyboards”. In: AIIDE, Stanford, California, USA, pages 96-101, The AAAI Press. PLUTCHIK, R., 1962, “The emotions: Facts, theories, and a new model”. New York, Random. House. PORTEOUS, J., TEUTENBERG, J., CHARLES, F., et al., 2011, “Controlling Narrative Time in Interactive Storytelling”, In: Proceedings of the 10th International Conference on Autonomous Agents and Multiagent Systems, pp. 449-456, Taipei, May. PORTEOUS, J., CAVAZZA, M., CHARLES, F., 2010, “Applying planning to interactive storytelling: Narrative control using state constraints”, ACM Transactions on Intelligent Systems and Technology, v. 1, n. 2 (Dec), pp. 10:1-10:21. 83 PORTEOUS, J., CAVAZZA, M., 2009, “Controlling Narrative Generation with Planning Trajectories: The Role of Constraints”. In: Proceedings of the 2nd Joint International Conference on Interactive Digital Storytelling, pp. 234-245, Guimarães, Dec. PROPP, V., 2003, Morphology of the Folktale. 2 ed. Austin, University of Texas Press. RAMAKRISHNAN, C. R., “Model Checking with Tabled Logic Programming”. DCS SUNY, Stony Brook, NY. RIEDL, M., Young, R.M., 2004, “An Intent-Driven Planner for Multi-Agent Story Generation”. In: Proceedings of the 3rd International Joint Conference on Autonomous Agents and Multiagent Systems, pp. 186-193, New York, Jul. RIEDL, M. STERN, A., 2006, “Believable agents and intelligent story adaptation for Interactive Storytelling”. In: Proceedings of the Third International Conference on Technologias for Interactive Digital Storytelling and Entertainment (TIDE’06). Springer-Verlag, Berlin, 1-12. ROBERTS, D.L., ISBELL, C.L., 2008, “A Survey and Qualitative Analysis of Recent Advances in Drama Management”, International Transactions on Systems Science and Applications, v. 4, n. 1 (May), pp. 61-75. RODRIGUES, P. S. L., 2008: “Um Sistema de Geração de Expressões Faciais Dinâmicas em Animações Faciais 3D com Processamento de Fala”. Tese de Doutorado, Departamento de Informática, PUC-Rio, Rio de Janeiro, RJ, Brasil. SICSTUS. SICStus Prolog. Disponível em: < http://sicstus.sics.se/ >. Acesso em: 26 setembro 2013. SILVA, M.A.R., LIMA, D.C., SILVA, J.C.A., et al., 2011, “A Narrative Game as an Educational Entertainment Resource to Teach Words to Children with Learning Deficits: A Feasibility Study”. In: Proceedings of the 10th International Conference on Entertainment Computing, pp. 222-227, New York, Oct. SILVA, F.A.G., CIARLINI, A. E. M., SIQUEIRA, S.W.M., 2010, “Nondeterministic Planning for Generating Interactive Plots”. In: Proceedings of the 12th Ibero-American Conference on Artificial Intelligence, pp. 133-143, Bahía Blanca, Nov. SILVA, F.A.G., 2010, Geração de Enredos com Planejamento Não-Determinístico em Storytelling para TV Interativa. Dissertação de M.Sc., Departamento de Informática, Universidade Federal do Estado do Rio de Janeiro, RJ, Brasil. 84 SPIERLING, U., 2005. Interactive Digital Storytelling: Towards a Hybrid Conceptual Approach. In: Conference Proceedings, Selected Papers of DIGRA 2005, Vancouver, BC, Canada SPIERLING, U., GRASBON, D., BRAUN, N., et al., 2002, “Setting the Scene: Playing Digital Director in Interactive Storytelling and Creation”. In: Computers and Graphics, 26:1(31-44). URSU, M.F., THOMAS, M., KEGEL, I. et al., 2008, “Interactive TV narratives: Opportunities, progress and challenges”. In: ACM Transactions in Multimedia Computing, Communications and Applications, 4:4(25:1-125:39). VIDAL, E. C. E., NAREYEK, A., 2011, “A Real-Time Concurrent Planning and Execution Framework for Automated Story Planning for Games”. In: Proceedings of the AIIDE Workshop on Narrative Technologies IV (INT IV). VENTURA, D., BROGAN. D.C., 2002, “Digital Storytelling with DINAH: dynamic, interactive, narrative authoring heuristic”. In: IWEC, Makuhari, Japão, p.91-99. WARE, S.G., YOUNG, R.M., 2011, “CPOCL: A Narrative Planner Supporting Conflict”. In: Proceedings of the 7th AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment, pp. 97-102, Stanford, Oct. WARE, S.G., YOUNG, R.M., 2010, “Modeling Narrative Conflict to Generate Interesting Stories”. In: Proceedings of the 6th AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment, pp. 277-298, Stanford, Oct. YUAN, J., SCHULTZ, K., PIXLEY, C. et al., 1999, “Modelling Design Constraints and Biasing in Simulation Using BDDS”. ZAGALO, N., BARKER, A., BRANCO, V., 2004, “Story reaction structures to emotion detection”. In: Proceedings of the 1st ACM workshop on Story representation, mechanism and context, pp. 33-38, New York, Oct. 85