See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Cola de prioridades (estructura de datos) - Wikipedia, la enciclopedia libre

Cola de prioridades (estructura de datos)

De Wikipedia, la enciclopedia libre

Una cola de prioridades es una estructura de datos en la que los elementos se atienden en el orden indicado por una prioridad asociada a cada uno. Si varios elementos tienen la misma prioridad, se atenderán de modo convencional según la posición que ocupen. Hay 2 formas de implementación:

  1. Añadir un campo a cada nodo con su prioridad. Resulta conveniente mantener la cola ordenada por orden de prioridad.
  2. Crear tantas colas como prioridades haya, y almacenar cada elemento en su cola.

Tabla de contenidos

[editar] Tipos de colas de prioridades

  • Colas de prioridades con ordenamiento ascendente: En ellas los elementos se insertan de forma arbitraria, pero a la hora de extraerlos, se extrae el elemento de menor prioridad.
  • Colas de prioridades con ordenamiento descendente: Son iguales que la colas de prioridad con ordenamiento ascendente, pero al extraer el elemento se extrae el de mayor prioridad.

[editar] Operaciones básicas

Las operaciones de las colas de prioridad son las mismas que las de las colas genéricas:

  • Crear: se crea la cola vacía.
  • Encolar: se añade un elemento a la cola, con su correspondiente prioridad.
  • Desencolar: se elimina el elemento frontal de la cola.
  • Frente: se devuelve el elemento frontal de la cola.

[editar] Implementación en Maude

Para la implementación de las colas de prioridad el elemento a insertar tiene que ser de un tipo que soporte un orden total y eso lo conseguimos creando una teoría, que será la siguiente:

fth ELEMENTO-PRIORIDAD is

 protecting BOOL .
 sorts Elt Prioridad .  
  • operaciones
op prioridad : Elt -> Prioridad .
op _>_ : Prioridad Prioridad -> Bool.

endfth


Una vez que tenemos la teoría procedemos a la implementación de la cola de prioridad:

fmod COLA-PRIORIDAD {X :: ELEMENTO-PRIORIDAD} is

sorts Cola PrioNV{X} ColaPrio{X} .
subsort Cola PrioNV{X} < ColaPrio{X} .
  • operaciones
op crear : -> Cola PrioNV{X} .
op encolar : X$Elt Cola Prio{X} -> Cola PrioNV{X} [ctor] .
  • constructores
op desencolar : Cola Prio{X} -> Cola {X} .
  • selectores
op frente : Cola PrioNV{X} -> X$Elt .
  • variables
var C : Cola PrioNV{X} .
var E : X$Elt .
  • ecuaciones
eq desencolar(crear) = crear .
eq desencolar(encolar(E,crear)) = crear .
eq desencolar(encolar(E,C)) = 
      if prioridad(E) > prioridad(frente(C)) then
         C
      else
         encolar(E,desencolar(C))
      fi .
eq frente(encolar(E,crear)) = E .
eq frente(encolar(E,C)) =
      if prioridad(E) > prioridad(frente(C)) then
         E
      else
         frente(C)
      fi .
endfm

[editar] Véase también


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -