当前位置: 首页>>代码示例>>PHP>>正文


PHP Estado::agregarConjunto方法代码示例

本文整理汇总了PHP中Estado::agregarConjunto方法的典型用法代码示例。如果您正苦于以下问题:PHP Estado::agregarConjunto方法的具体用法?PHP Estado::agregarConjunto怎么用?PHP Estado::agregarConjunto使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Estado的用法示例。


在下文中一共展示了Estado::agregarConjunto方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: AFNDaAFD

 function AFNDaAFD()
 {
     $this->siguiente_ID = 1;
     $estados_desmarcados = array();
     $conjunto_estado_inicial_AFD = array();
     $conjunto_estado_inicial_AFND = array();
     // Extrae el estado inicial del AFND
     $tmp = $this->AFND->getEstados();
     if (empty($tmp)) {
         return;
     }
     $conjunto_estado_inicial_AFND[] = $tmp[0];
     // Calcula las transiciones vacías para el estado inicial del AFND
     // y crea el conjunto de estados que formará el estado inicial del AFD
     $conjunto_estado_inicial_AFD = $this->epsilonClosure($conjunto_estado_inicial_AFND);
     // Crea nuevo estado inicial del AFD con el conjunto de estados
     $q0 = new Estado($this->siguiente_ID++, true, false);
     $q0->agregarConjunto($conjunto_estado_inicial_AFD);
     // Agrega el estado al AFD
     $this->AFD->setEstado($q0);
     foreach ($this->simbolos as $simbolo) {
         if ($simbolo != 'ε') {
             $this->AFD->setSimbolo($simbolo);
         }
     }
     // Agrega el estado inciial a un conjunto de estados no procesados del AFD
     $estados_desmarcados[] = $q0;
     while (!empty($estados_desmarcados)) {
         // procesar un estado no procesado
         $estado_activo = array_pop($estados_desmarcados);
         $simbolos_AFD = $this->AFD->getSimbolos();
         foreach ($simbolos_AFD as $simbolo) {
             // guarda el conjunto de estados resultante de aplicacar la función move en el estado activo
             $move_res = $this->move($simbolo, $estado_activo->getEstadosAFND());
             // guarda el conjunto de estados resultante de las transiciones vacías sobre el resultado anterior
             $epsilonclosure_res = $this->epsilonClosure($move_res);
             $encontrado = false;
             $s = null;
             $se = $this->AFD->getEstados();
             // busca si el conjunto de estados encontrado ya existía previamente en el AFD
             for ($i = 0; $i < $this->AFD->getTotalEstados(); $i++) {
                 $s = $se[$i];
                 if ($s->getEstadosAFND() === $epsilonclosure_res) {
                     $encontrado = true;
                     break;
                 }
             }
             // si el conjunto ya existía, no se procesa; en caso contrario:
             if (!$encontrado) {
                 // se crea un nuevo estado en el AFD con el conjunto encontrado
                 $U = new Estado($this->siguiente_ID++);
                 $U->agregarConjunto($epsilonclosure_res);
                 // Se agrega el estado a los estados desmarcados, para procesarlo
                 $estados_desmarcados[] = $U;
                 // Se agrega el estado al AFD
                 $this->AFD->setEstado($U);
                 // Agregar transicion de estado en proceso a nuevo estado con el simbolo actual
                 $estado_activo->setTransicion($simbolo, $U);
             } else {
                 $estado_activo->setTransicion($simbolo, $s);
             }
         }
     }
     $this->reducirAFD();
 }
开发者ID:royfall,项目名称:trabajotalf,代码行数:65,代码来源:Thompson.php


注:本文中的Estado::agregarConjunto方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。