Edición de «AED2 resumen 2C-17»

De Cuba-Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces publica los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 3: Línea 3:
=== a ===
=== a ===


duplicar: secu(α) → secu(α)
duplicar: secu(α)→secu(α)


duplicar(s) ≡ if vacía?(s) then ⟨⟩ else prim(s) • prim(s) • duplicar(fin(s)) fi
duplicar(s)≡if vacía?(s) then ⟨⟩ else prim(s)•prim(s)•duplicar(fin(s)) fi


=== b ===
=== b ===
Línea 11: Línea 11:
•≤•: secu(α) x secu(α) → bool
•≤•: secu(α) x secu(α) → bool


s &le; t &equiv; if &not;(vacía?(s) &or; vacía?(t)) then prim(s) < prim(t) &or; (prim(s) = prim(t) &and; fin(s) &le; fin(t)) else vacía?(s) fi
s &le; t &equiv; if &not;(vacía?(s) &or; vacía?(t)) then prim(s) < prim(t) &or; (prim(s)=prim(t) &and; fin(s)&le;fin(t)) else vacía?(s) fi


=== c ===
=== c ===
Línea 151: Línea 151:
ntn: conj(secu(&alpha;)) x secu(&alpha;) &rarr;  conj(secu(&alpha;))
ntn: conj(secu(&alpha;)) x secu(&alpha;) &rarr;  conj(secu(&alpha;))


[ToDo]
blablabla
 
Necesito:
 
* Ver si CADA secuencia del conjunto de entrada es o no subsecuencia de la secuencia de entrada (2do param)
*  &rarr; Definir función auxiliar '''''esSubsecuencia(a &bull; s, b &bull; t)''''', <small>a,b:&alpha;, s,t:secu(&alpha;)</small>
*  &rarr; Definir '''''ntn(Ag(a &bull; s, w), b &bull; t)'''''<small>, w: conj(secu(&alpha;))</small>
 
* Ver si CADA secuencia del conjunto DE SALIDA es o no subsecuencia de alguna otra secuencia del conjunto de salida
*  &rarr; Puedo usar la misma función auxiliar esSubsecuencia()


== Ejercicio 5 ==
== Ejercicio 5 ==
Línea 171: Línea 162:


=== b ===
=== b ===
    // Defino auxiliar que cuente cantNodos en una secuencia de arboles ternarios:
   
    cantNodos: secu( at( &alpha; ) ) -> nat
   
    cantNodos( t · <> ) &equiv; if t &ne; nil then 1 else 0
    cantNodos( t · s )  &equiv; if t &ne; nil then 1 + cantNodos(s)
                                    else cantNodos(s)


    acotado?: at(&alpha;) x nat -> bool
blablabla
   
    acotado?(nil, k) &equiv; true
   
    // Recibo el arbol ternario como sus partes separadas: (izq,medio,der,raiz)
   
    acotado?(tern(i,m,d,r), k) &equiv; if cantNodos(i · m · d · <>) &le; k then
                                    acotado?(i) &and; acotado?(m) &and; acotado?(d)
                                else
                                    false


== Ejercicio 6 ==
== Ejercicio 6 ==
Línea 194: Línea 169:
=== a ===
=== a ===


    altura: rosetree(&alpha;) &rarr; nat
altura: rosetree(&alpha;) &rarr; nat
   
 
    altura(rose(r, &lang;&rang;)) &equiv; 1
altura(rose(r,&lang;&rang;)) &equiv; 1
   
 
    altura(rose(r, e &bull; s)) &equiv; 1 + altura(masAlta(r, e &bull; s))
altura(rose(r,e &bull; s)) &equiv; 1 + altura(masAlta(r,e &bull; s))
   
 
    masAlta: &alpha; x secu(rosetree(&alpha;)) &rarr; rosetree(&alpha;)
masAlta: &alpha; x secu(rosetree(&alpha;)) &rarr; rosetree(&alpha;)
   
 
    masAlta(a, s) &equiv; if vacía?(s) then
masAlta(a,s) &equiv; if vacía?(s) then rose(a,&lang;&rang;) else if altura(prim(s)) > altura(masAlta(a,fin(s))) then prim(s) else masAlta(a,fin(s)) fi fi
                        rose(a,&lang;&rang;)
                    else if altura(prim(s)) > altura(masAlta(a, fin(s))) then
                            prim(s)
                        else
                            masAlta(a, fin(s))
                        fi
                    fi


=== b ===
=== b ===


    cantHojas: rosetree(&alpha;) &rarr; nat
cantHojas: rosetree(&alpha;) &rarr; nat
   
 
    cantHojas(r) &equiv; if esHoja?(r) then  
cantHojas(r) &equiv; if esHoja?(r) then 1 else sumarHojas(hijos(r)) fi
                      1
 
                  else
esHoja?: rosetree(&alpha;) &rarr; bool
                      sumarHojas(hijos(r))
 
                  fi
esHoja?(r) &equiv; vacía?(hijos(r))
   
 
   
sumarHojas: secu(rosetree(&alpha;)) &rarr; nat
    esHoja?: rosetree(&alpha;) &rarr; bool
 
   
sumarHojas(s) &equiv; if vacía?(s) then 0 else cantHojas(prim(s)) + sumarHojas(fin(s)) fi
    esHoja?(r) &equiv; vacía?(hijos(r))
   
   
    sumarHojas: secu( rosetree(&alpha;) ) &rarr; nat
   
    sumarHojas(s) &equiv; if vacía?(s) then  
                        0
                    else
                        cantHojas(prim(s)) + sumarHojas(fin(s))
                    fi


=== c ===
=== c ===


    podar: rosetree(&alpha;) a &rarr; rosetree(&alpha;) {&not;esHoja?(a)}
podar: rosetree(&alpha;) a &rarr; rosetree(&alpha;) {&not;esHoja?(a)}
   
 
    podar(r) &equiv; rose(raíz(r), podadora(hijos(r)))
podar(r) &equiv; rose(raíz(r),podadora(hijos(r)))
   
 
   
podadora: secu(rosetree(&alpha;)) &rarr; secu(rosetree(&alpha;))
    podadora: secu(rosetree(&alpha;)) &rarr; secu(rosetree(&alpha;))
 
   
podadora(s) &equiv; if vacía?(s) then s else if esHoja?(prim(s)) then podadora(fin(s)) else podar(prim(s)) &bull; podadora(fin(s)) fi fi
    podadora(s) &equiv; if vacía?(s) then
                      s
                  else
                      if esHoja?(prim(s)) then
                          podadora(fin(s))
                      else
                          podar(prim(s)) &bull; podadora(fin(s))
                      fi
                  fi


=== d ===
=== d ===


    obtenerRamas: rosetree(&alpha;) &rarr; secu(secu((&alpha;))
obtenerRamas: rosetree(&alpha;) &rarr; secu(secu((&alpha;))
   
 
    obtenerRamas(r) &equiv; if esHoja?(r) then
obtenerRamas(r) &equiv; if esHoja?(r) then (raíz(r) &bull; &lang;&rang;) &bull; &lang;&rang; else if long(hijos(r)) = 1 then insertarTodos(raíz(r),obtenerRamas(prim(hijos(r)))) else insertarTodos(raíz(r),obtenerRamas(prim(hijos(r)))) & obtenerRamas(rose(raíz(r),fin(hijos(r)))) fi fi
                          (raíz(r) &bull; &lang;&rang;) &bull;&lang;&rang;  
 
                      else
insertarTodos: &alpha; x secu(secu(&alpha;)) &rarr; secu(secu(&alpha;))
                          if long(hijos(r)) = 1 then
 
                              insertarTodos(raíz(r), obtenerRamas(prim(hijos(r))))
insertarTodos(a,s) &equiv; if vacía(s) then &lang;&rang; else (a &bull; prim(s)) &bull; insertarTodos(a,fin(s)) fi
                          else
                              insertarTodos(raíz(r),obtenerRamas(prim(hijos(r)))) & obtenerRamas(rose(raíz(r),fin(hijos(r))))
                          fi
                      fi
   
    insertarTodos: &alpha; x secu(secu(&alpha;)) &rarr; secu(secu(&alpha;))
   
    insertarTodos(a,s) &equiv; if vacía(s) then
                            &lang;&rang;
                        else
                            (a &bull; prim(s)) &bull; insertarTodos(a,fin(s))
                        fi


=== e ===  
=== e ===  
Ten en cuenta que todas las contribuciones a Cuba-Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Cuba-Wiki:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)