• Posts recientes

    Algoritmos de Ordenación en Prolog [código]

    Los algoritmos de ordenación son utilizados en gran cantidad de aplicaciones de todo tipo, y la eficiencia en el desarrollo de su trabajo (ordenación) y uso adecuado de memoria es el factor que hace que algunos sean más utilizados que otros. En este post se presenta la implementación de algunos algoritmos como ordenación por el método de mezcla (merge sort), método de selección y método de inserción en Prolog.



    El código fuente del algoritmo de ordenación por selección en Prolog es el siguiente:

    1. %Author: Jorge Valverde Rebaza
    2. %algoritmo de ordenacion por Seleccion
    3. ordSeleccion(L1,L2):-seleccion(L1,[],L2).
    4. seleccion([],L2,L2).
    5. seleccion(L1,L2,L3):-menorlista(L1,M),
    6. eliminar(M,L1,Laux),
    7. setCabeza(M,Laux,[H|T]),
    8. append(L2,H,Laux2),
    9. seleccion(T,Laux2,L3).
    10. %ponemos un elemento como cabeza de la lista
    11. setCabeza(H,L,[H|L]).
    12. %eliminamos un elemento X de la lista
    13. eliminar(_,[],[]):-fail.
    14. eliminar(X,[X|R],R).
    15. eliminar(X,[C|R],[C|R1]):- eliminar(X,R,R1).

    -->El código fuente del algoritmo de ordenación merge sort en Prolog (método de mezcla) es el siguiente:

    1. %author: Jorge Valvede Rebaza
    2. %algoritmo de ordenación merge sort (mezcla)
    3. ordMezcla([X],[X]):-!.
    4. ordMezcla([],[]).
    5. ordMezcla(L1,L2):-partir(L1,A,B),
    6. ordMezcla(A,R1),
    7. ordMezcla(B,R2),
    8. mezclar(R1,R2,L2).
    9. %partimos la lista pasando un elemento de
    10. %manera intercalada a una u otra lista
    11. partir([],[],[]).
    12. partir([X],[X],[]).
    13. partir([X,Y|Z1],[X|Z2],[Y|Z3]):-partir(Z1,Z2,Z3).
    14. mezclar(L,[],L).
    15. mezclar([],L,L).
    16. mezclar([X|Z1],[Y|Z2],[X|Z3]):- X
    17. mezclar(Z1,[Y|Z2],Z3).
    18. mezclar([X|Z1],[Y|Z2],[Y|Z3]):- X>=Y,
    19. mezclar([X|Z1],Z2,Z3).

    -->El código fuente del algoritmo de ordenación por inserción en Prolog es el siguiente:
    1. %author: Jorge Valvede Rebaza
    2. %ordenacion por el método de insercion
    3. ordInsercion([],[]).
    4. ordInsercion([H|T],L):-ordInsercion(T,L1),
    5. insertar(H,L1,L).
    6. insertar(N,[],[N]).
    7. insertar(N,[H|T],[N,H|T]):- N
    8. insertar(N,[H|T],[H|S]):- insertar(N,T,S).

    -->En los algoritmos presentados se hace uso de algunos métodos propios de una estructura Lista en Prolog, la cual se presenta en el post: Uso de Listas en Prolog [código].

    Espero les sirva, saludos.



    Quieres leer más post como éste???...suscribete aquí!!!



    No hay comentarios.

    Related Posts Plugin for WordPress, Blogger...

    Post Top Ad