Algoritmo de backtracking
Upcoming SlideShare
Loading in...5
×
 

Algoritmo de backtracking

on

  • 3,148 views

 

Statistics

Views

Total Views
3,148
Views on SlideShare
3,145
Embed Views
3

Actions

Likes
0
Downloads
46
Comments
0

1 Embed 3

http://uccvirtual.edu20.org 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Algoritmo de backtracking Algoritmo de backtracking Presentation Transcript

  • 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.
  • 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
  • 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
  • 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 .
  • 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.
  • 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
  • EJEMPLOS DE PROBLEMAS COMUNESRESUELTOS USANDO VUELTA ATRÁSSudokuProblema de losmovimientos de uncaballoLas ocho reinas
  • Algoritmo de Backtracking
  • 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.
  • GRACIASVíctor Romero