Your SlideShare is downloading. ×
Algoritmo de backtracking
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Algoritmo de backtracking

3,521
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,521
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
62
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ALGORITMO DE BACKTRACKINGEn su forma básica, la idea de backtracking seasemeja a un recorrido en profundidad dentro de ungrafo dirigido. El grafo en cuestión suele ser un árbol,o por lo menos no contiene ciclos. Sea cual sea suestructura, existe sólo implícitamente. El objetivo delrecorrido es encontrar soluciones para algúnproblema.
  • 2. El recorrido tiene éxito si, procediendo de esta forma,se puede definir por completo una solución. En estecaso el algoritmo puede bien detenerse (si lo únicoque se necesita es una solución del problema) o bienseguir buscando soluciones alternativas (si deseamosexaminarlas todas). Por otra parte, el recorrido no tieneéxito si en alguna etapa la solución parcial construidahasta el momento no se puede completar. En tal caso,el recorrido vuelve atrás exactamente igual que en unrecorrido en profundidad, eliminando sobre la marchalos elementos que se hubieran añadido en cada fase.Cuando vuelve a un nodo que tiene uno o más vecinossin explorar, prosigue el recorrido de una solución
  • 3. ALGORITMO DE BACKTRACKINGproc Backtracking (↕X[1 . . . i ]: TSolución, ↑ok: B)variables L: ListaComponentesiniciosi EsSolución (X) entoncesok CIERTOde lo contrariook FALSOL=Candidatos (X)mientras ¬ok ^ ¬Vacía (L) hacerX[i + 1] Cabeza (L); L Resto (L)Backtracking (X, ok)fin mientrasfin sifin
  • 4. ENFOQUESALGORITMO DE BACKTRACKINGLos problemas que deben satisfacer un determinado tipo derestricciones son problemas completos, donde el orden de loselementos de la solución no importa. estos problemas consisten enun conjunto (o lista) de variables a la que a cada una se le debeasignar un valor sujeto a las restricciones del problema. la técnica vacreando todas las posibles combinaciones de elementos paraobtener una solución. su principal virtud es que en la mayoría de lasimplementaciones se puede evitar combinaciones, estableciendofunciones de acotación (o poda) reduciendo el tiempo de ejecución.vuelta atrás está muy relacionado con labúsquedas binarias .
  • 5. DISEÑO E IMPLEMENTACIÓNBACKTRACKINGEsencialmente, la idea es encontrar la mejor combinaciónposible en un momento determinado, por eso, se dice que estetipo de algoritmo es una búsqueda en profundidad.Normalmente, se suele implementar este tipo dealgoritmos como un procedimiento recursivo.La diferencia con la búsqueda en profundidad es que sesuelen diseñar funciones de cota, de forma que no segeneren algunos estados si no van a conducir a ningunasolución, o a una solución peor de la que ya se tiene. Deesta forma se ahorra espacio en memoria y tiempo deejecución.
  • 6. Algunas heurísticas son comúnmente usadas paraacelerar el proceso. Como las variables se puedenprocesar en cualquier orden, generalmente es máseficiente intentar ser lo más restrictivo posible conlas primeras (esto es, las primeras con menoresvalores posibles). Este proceso poda el árbol debúsqueda antes de que se tome la decisión y sellame a la subrutina recursiva.HEURÍSTICASALGORITMO DE BACKTRACKING
  • 7. EJEMPLOS DE PROBLEMAS COMUNESRESUELTOS USANDO VUELTA ATRÁSSudokuProblema de losmovimientos de uncaballoLas ocho reinas
  • 8. Algoritmo de Backtracking
  • 9. Backtracking RecursivoBacktracking es una técnica algorítmicaque consiste en la resolución deproblemas mediante la búsquedasistemática de soluciones exhaustivas.Comúnmente, esta técnica hace uso de larecursividad, y es importante quedomines la implementación de lasllamadas recursivas con destreza antes decontinuar. Te invitamos a que leas eltutorial: Recursividad: La guía definitiva, yaunque no lo consideres necesario puedeque te sean útiles algunos consejos que teayudarán en la formación comoprogramador.
  • 10. GRACIASVíctor Romero