Está en la página 1de 16

ALGORITMOS DE RECORRIDO

A Backtracking.
(Vuelta atrs), es una estrategia para encontrar soluciones a problemas que satisfacen
restricciones. El trmino "backtrack" fue acuado por primera ve por el matemtico
estadounidense !. ". #e$mer en la dcada de %&'(.
1 Concepto.
En su forma bsica, la idea de backtracking se aseme)a a un recorrido en
profundidad dentro de un grafo dirigido. El grafo en cuesti*n suele ser un rbol, o
por lo menos no contiene ciclos. +ea cual sea su estructura, e,iste s*lo
impl-citamente. El ob)etivo del recorrido es encontrar soluciones para alg.n
problema. Esto se consigue constru/endo soluciones parciales a medida que
progresa el recorrido0 estas soluciones parciales limitan las regiones en las que se
puede encontrar una soluci*n completa. El recorrido tiene ,ito si, procediendo de
esta forma, se puede definir por completo una soluci*n. En este caso el algoritmo
puede, o bien detenerse (si lo .nico que se necesita es una soluci*n del problema)
o bien seguir buscando soluciones alternativas (si deseamos e,aminarlas todas).
1or otra parte, el recorrido no tiene ,ito si en alguna etapa la soluci*n parcial
construida $asta el momento no se puede completar. En tal caso, el recorrido
vuelve atrs e,actamente igual que en un recorrido en profundidad, eliminando
sobre la marc$a los elementos que se $ubieran aadido en cada fase. 2uando
vuelve a un nodo que tiene uno o ms vecinos sin e,plorar, prosigue el recorrido de
una soluci*n.
1.1 Ilustracin concepto Backtracking.
En!o"ues
#os problemas que deben satisfacer un determinado tipo de restricciones son
problemas completos, donde el orden de los elementos de la soluci*n no importa.
Estos problemas consisten en un con)unto (o lista) de variables a la que a cada una
se le debe asignar un valor su)eto a las restricciones del problema. #a tcnica va
creando todas las posibles combinaciones de elementos para obtener una soluci*n.
+u principal virtud es que en la ma/or-a de las implementaciones se puede evitar
combinaciones, estableciendo funciones de acotaci*n (o poda) reduciendo el
tiempo de e)ecuci*n.
Vuelta atrs est mu/ relacionada con la b.squeda combinatoria.
# Dise$o e i%ple%entacin
Esencialmente, la idea es encontrar la me)or combinaci*n posible en un momento
determinado, por eso, se dice que este tipo de algoritmo es una b.squeda en
profundidad. !urante la b.squeda, si se encuentra una alternativa incorrecta, la
b.squeda retrocede $asta el paso anterior / toma la siguiente alternativa. 2uando
se $an terminado las posibilidades, se vuelve a la elecci*n anterior / se toma la
siguiente opci*n ($i)o 3si nos referimos a un rbol4). +i no $a/ ms alternativas la
b.squeda falla. !e esta manera, se crea un rbol impl-cito, en el que cada nodo es
un estado de la soluci*n (soluci*n parcial en el caso de nodos interiores o soluci*n
total en el caso de los nodos $o)a).
5ormalmente, se suele implementar este tipo de algoritmos como un procedimiento
recursivo. 6s-, en cada llamada al procedimiento se toma una variable / se le
asignan todos los valores posibles, llamando a su ve al procedimiento para cada
uno de los nuevos estados. #a diferencia con la b.squeda en profundidad es que se
suelen disear funciones de cota, de forma que no se generen algunos estados si
no van a conducir a ninguna soluci*n, o a una soluci*n peor de la que /a se tiene.
!e esta forma se a$orra espacio en memoria / tiempo de e)ecuci*n.
& Algorit%o 'e Backtracking
proc 7acktracking (893% . . . i 4: ;+oluci*n, <ok: 7)
variables #: #ista2omponentes
inicio
si Es+oluci*n (9) entonces
ok 2=E>;?
de lo contrario
ok @6#+?
#A2andidatos (9)
mientras Bok C BVac-a (#) $acer
93i D %4 2abea (#)0 # >esto (#)
7acktracking (9, ok)
fin mientras
fin si
fin
( E)e%plo
.* ALGORITMOS +ORACES
,-u. son los algorit%os /oraces0
En algoritmo vora, tambin conocido como vido, devorador o goloso, es aquel que,
para resolver un determinado problema, sigue una $eur-stica consistente en elegir la
opci*n *ptima en cada paso local con la esperana de llegar a una soluci*n general
*ptima. Ena apro,imaci*n vora consiste en que cada elemento a considerar se
eval.a una .nica ve, siendo descartado o seleccionado, de tal forma que si es
seleccionado forma parte de la soluci*n, / si es descartado, no forma parte de la
soluci*n ni volver a ser considerado para la misma. Ena forma de ver los algoritmos
voraces es considerar la estrategia de Vuelta atrs, en la cual se vuelve
recursivamente a decisiones anteriormente tomadas para variar la elecci*n entonces
tomada, pero eliminando esa recursi*n / eligiendo la me)or opci*n.
El trmino vora se deriva de la forma en que los datos de entrada se van tratando,
realiando la elecci*n de desec$ar o seleccionar un determinado elemento una sola
ve.
6l contrario que con otros mtodos algor-tmicos, no siempre es posible dar una
soluci*n a un problema empleando un algoritmo vora. 5o todos los problemas son
resolubles con algoritmos voraces.
#os algoritmos voraces tienden a ser bastante eficientes / pueden implementarse de
forma relativamente sencilla. +u eficiencia se deriva de la forma en que trata los
datos, llegando a alcanar muc$as veces una comple)idad de orden lineal. +in
embargo, la ma/or-a de los intentos de crear un algoritmo vora correcto fallan a
menos que e,ista previamente una prueba precisa que demuestre lo acertado del
algoritmo. 2uando una estrategia vora falla al producir resultados *ptimos en todas
las entradas, en lugar de algoritmo suele denominarse $eur-stica. #as $eur-sticas
resultan .tiles cuando la velocidad es ms importante que los resultados e,actos (por
e)emplo, cuando resultados "bastante buenos" son suficientes)
,C%o !uncionan0
El esquema vora procede por pasos:
=nicialmente el con)unto de candidatos o elementos es vac-o.
En cada paso se intenta aadir al con)unto de los escogidos el me)or de los no
escogidos, utiliando una funci*n de selecci*n basada en alg.n criterio de
optimiaci*n.
;ras cada paso, $a/ que ver si el con)unto seleccionado se puede o no
completar (si aadiendo ms elementos se puede llegar a la soluci*n).+i el
con)unto no se puede completar se rec$aa el .ltimo elemento elegido / no se
vuelve a considerar0 si se puede completar, se incorpora el con)unto de
escogidos / permanece siempre en l.
;ras cada incorporaci*n se comprueba si el con)unto resultante es una soluci*n.
El algoritmo termina cuando se obtiene una soluci*n.
El algoritmo es correcto si la soluci*n encontrada es siempre *ptima.
El esquema genrico del algoritmo vora es:
funcion voraz(C:conjunto):conjunto
{ C es el conjunto de todos los candidatos }
S <= vacio { S es el conjunto en el que se construye la solucion}
mientras solucion(S) y C <> vaciohacer
x <= el elemento de C que maximiza seleccionar(x)
C <= C {x}
si completable(S ! {x}) entonces S <= S ! {x}
si solucion(S)
entonces devolver S
si no devolver no hay solucin
El nombre vora proviene de que, en cada paso, el algoritmo escoge el me)or
"pedao" que es capa de "comer" sin preocuparse del futuro. 5unca des$ace una
decisi*n /a tomada: una ve incorporado un candidato a la soluci*n permanece a$-
$asta el final0 / cada ve que un candidato es rec$aado, lo es para siempre.
E)e%plos1
2ro3le%a 'el ca%3io 'e %one'a
Enuncia'o: "+e pide crear un algoritmo que permita a una mquina e,pendedora
devolver el cambio mediante el menor n.mero de monedas posible, considerando
que el n.mero de monedas es limitado, es decir, se tiene un n.mero concreto de
monedas de cada tipo".
Solucin: #a estrategia a seguir consiste en escoger sucesivamente las monedas de
valor ma/or que no superen la cantidad de cambio a devolver. El buen
funcionamiento del algoritmo depende de los tipos de monedas presentes en la
entrada. 6s-, por e)emplo, si no $a/ monedas de valor menor que die, no se podr
devolver un cambio menor que die. 6dems, la limitaci*n del n.mero de monedas
tambin influ/e en lo *ptimo del algoritmo, el cual devuelve buenas soluciones ba)o
determinados con)untos de datos, pero no siempre. 2onsidrense los dos siguientes
e)emplos como demostraci*n de lo dic$o:
Fonedas '( G' ' %
2antidad H I % J

+i $a/ que devolver la cantidad %%( siguiendo el mtodo del algoritmo vora, se
tomar-a primero una moneda de '(, quedando una cantidad restante de J(. 2omo '(
es a.n menor que J(, se tomar-a otra moneda de '(. 6$ora la cantidad restante es
%(, por tanto /a tenemos que devolver una moneda de ', /a que '( / G' son
ma/ores que %(, / por tanto se desec$an. #a cantidad a devolver a$ora es '. +e
tomar-a otra moneda de ', pero puesto que /a no nos queda ninguna, debern
devolverse ' de valor %, terminando as- el problema de forma correcta.
Fonedas J I %
2antidad H I %
+i queremos devolver la cantidad K, siguiendo el procedimiento anterior, el algoritmo
tomar-a primero una moneda de J, quedando un resto de G. ;omar-a G monedas de
valor %, $abiendo devuelto por tanto H monedas, cuando es fcil ver que con G
monedas de valor I se obtiene el resultado pedido.
6lgoritmo:
2ro3le%a 'e la %oc4ila
Enuncia'o: "+e tiene una moc$ila que es capa de soportar un peso m,imo 1, as-
como un con)unto de ob)etos, cada uno de ellos con un peso / un beneficio. #a soluci*n
pasa por conseguir introducir el m,imo beneficio en la moc$ila, eligiendo los ob)etos
adecuados. 2ada ob)eto puede tomarse completo o fraccionado".
Solucin: #a forma ms simple de saber qu ob)etos se deben tomar es ordenar dic$os
ob)etos por la relaci*n beneficio L peso de ma/or a menor. !e esta forma, tomaremos
los ob)etos con ma/or beneficio en este orden $asta que la bolsa se llene, fraccionando
si fuera preciso, el .ltimo ob)eto a tomar.
Algorit%o:
M V almacena los beneficios de cada ob)eto,
M 1 almacena el peso de cada ob)eto,
M sol devuelve el tanto por % de ob)eto que se toma,
M benef devuelve el beneficio total,
M valorNobten almacena el beneficio parcial,
M pesoNac almacena el peso parcial.
2ro3le%a 'e los inter/alos cerra'os 'e puntos
Enuncia'o: "+e pide un algoritmo para que, dado un con)unto de puntos sobre una
recta real, determine el menor con)unto de intervalos cerrados de longitud % que
contenga a todos los puntos dados".
Solucin: 1artiendo de un con)unto ordenado de puntos, se consideran los puntos
sucesivos en cada iteraci*n del algoritmo. +i la entrada es un con)unto ordenado, el
coste del algoritmo es lineal respecto a la cantidad de puntos.
Algorit%o1
#.* ALGORITMO DI+IDE 5 +E6CERAS
,A "u. se re!iere 7Di/i'e 8 /encer9s70
En la cultura popular, 'i/i'e 8 /encer9s $ace referencia a un refrn que implica
resolver un problema dif-cil, dividindolo en partes ms simples tantas veces como sea
necesario, $asta que la resoluci*n de las partes se torna obvia. #a soluci*n del
problema principal se constru/e con las soluciones encontradas.
En las ciencias de la computaci*n, el trmino 'i/i'e 8 /encer9s (D5+) $ace referencia
a uno de los ms importantes paradigmas de diseo algor-tmico. El mtodo est
basado en la resoluci*n recursiva de un problema dividindolo en dos o ms
subproblemas de igual tipo o similar. El proceso contin.a $asta que stos llegan a ser lo
suficientemente sencillos como para que se resuelvan directamente. 6l final, las
soluciones a cada uno de los subproblemas se combinan para dar una soluci*n al
problema original.
Esta tcnica es la base de los algoritmos eficientes para casi cualquier tipo de problema
como, por e)emplo, algoritmos de ordenamiento (quicksort, mergesort, entre muc$os
otros), multiplicar n.meros grandes (Oaratsuba), anlisis sintcticos (anlisis sintctico
topMdoPn) / la transformada discreta de @ourier.
1or otra parte, analiar / disear algoritmos de !/V son tareas que lleva tiempo
dominar. 6l igual que en la inducci*n, a veces es necesario sustituir el problema original
por uno ms comple)o para conseguir realiar la recursi*n, / no $a/ un mtodo
sistemtico de generaliaci*n.
El nombre divide / vencers tambin se aplica a veces a algoritmos que reducen cada
problema a un .nico subproblema, como la b.squeda binaria para encontrar un
elemento en una lista ordenada (o su equivalente en computaci*n numrica,
el algoritmo de bisecci*n para b.squeda de ra-ces). Estos algoritmos pueden ser
implementados ms eficientemente que los algoritmos generales de Qdivide / vencersR0
en particular, si es usando una serie de recursiones que lo convierten en simples
bucles. 7a)o esta amplia definici*n, sin embargo, cada algoritmo que usa recursi*n o
bucles puede ser tomado como un algoritmo de Qdivide / vencersR. El
nombre 'ecre%enta 8 /encer9s $a sido propuesta para la subclase simple de
problemas.
#a correcci*n de un algoritmo de Qdivide / vencersR, est $abitualmente probada
una inducci*n matemtica, / su coste computacional se determina
resolviendo relaciones de recurrencia.
,En "u. consiste 7Di/i'e 8 /encer9s0
#a tcnica de diseo de algoritmos llamada "divide / vencers" (divide and conquer)
consiste en descomponer el problema original en varios subMproblemas ms sencillos,
para luego resolver stos mediante un clculo sencillo. 1or .ltimo, se combinan los
resultados de cada subMproblema para obtener la soluci*n del problema original. El
pseudoc*digo ser-a:
funcion divideN/NvencerasN%(problema)
S
descomponer el problema en n subproblemas ms pequeos0
para iA% $asta n $acer
resolver el subproblema k0
combinar las n soluciones0
T
En e)emplo de "divide / vencers" es la ordenaci*n rpida, o quicksort, utiliada para
ordenar arra/s. En ella, se divid-a el arra/ en dos subMarra/s, para luego resolver cada
uno por separado, / unirlos (ver algoritmos de ordenaci*n). El a$orro de tiempo es
grande: el tiempo necesario para ordenar un arra/ de elementos mediante el mtodo de
la burbu)a es cuadrtico: k5
G
. +i dividimos el arra/ en dos / ordenamos cada uno de
ellos, el tiempo necesario para resolverlo es a$ora k(5LG)
G
Dk(5LG)
G
A(k5
G
)LG. El tiempo
necesario para ordenarlo es la mitad, pero sigue siendo cuadrtico.
1ero a$ora, si los subproblemas son todav-a demasiado grandes, Upor qu no utiliar la
misma tctica con ellos, esto es, dividirlos a ellos tambin, utiliando un algoritmo
recursivo (ver recursividad) que va/a dividiendo ms el subMproblema $asta que su
soluci*n sea trivialV En algoritmo del tipo:
funcion divideN/Nvenceras(problema)
S
si el problema es trivial
entonces resolver el problema0
si no es trivial
S descomponer el problema en n subproblemas ms pequeos0
para iA% $asta n $acer
divideN/Nvenceras(subproblemaNk)0
combinar las n soluciones0
T
T
+i aplicamos este mtodo al quicksort, el tiempo disminu/e $asta ser logar-tmico, con lo
que el tiempo a$orrado es ma/or cuanto ms aumenta 5.
Tiempo de ejecucin
El tiempo de e)ecuci*n de un algoritmo de divide / vencers, ;(n), viene dado por la
suma de dos elementos:
El tiempo que tarda en resolver los 6 subproblemas en los que se divide el
original, 6W;(nL7), donde nL7 es el tamao de cada subMproblema.
El tiempo necesario para combinar las soluciones de los subMproblemas para
$allar la soluci*n del original0 normalmente es ?(n
k
)
1or tanto, el tiempo total es: ;(n) A 6W;(nL7) D ?(n
k
). #a soluci*n de esta ecuaci*n, si 6
es ma/or o igual que % / 7 es ma/or que %, es:
si 6X7
k
, ;(n) A ?(n
log
7
6
)
si 6A7
k
, ;(n) A ?(n
k
Wlog n)
si 6Y7
k
, ;(n) A ?(n
k
)
Deter%inacin 'el u%3ral
Eno de los aspectos que $a/ que tener en cuenta en los algoritmos de divide /
vencers es d*nde colocar el umbral, esto es, cundo se considera que un subM
problema es suficientemente pequeo como para no tener que dividirlo para resolverlo.
5ormalmente esto es lo que $ace que un algoritmo de divide / vencers sea efectivo o
no. 1or e)emplo, en el algoritmo de ordenaci*n quicksort, cuando se tiene un arra/ de
longitud H, es me)or ordenarlo utiliando otro algoritmo de ordenaci*n (con J
comparaciones se puede ordenar), /a que el quicksort debe dividirlo en dos subMarra/s
/ ordenar cada uno de ellos, para lo que utilia ms de J comparaciones.
E)e%plos 'e 7Di/i'e 8 /encer9s7
:allar la %e'iana 'e un con)unto 'e puntos
#a mediana es el elemento de un con)unto que cumple que en el con)unto $a/ el mismo
n.mero de elementos ma/ores que l / menores que l. !ic$o de otra forma, si el
con)unto est ordenado, la mediana es el elemento central. Ena forma de resolverlo es
esa, ordenar el con)unto / localiar el elemento central. El tiempo de e)ecuci*n ser-a de
?(nWlog n), pero, Use podr-a resolver en tiempo lineal utiliando una estrategia de divide
/ vencersV
"a/ un mtodo llamado selecci*n rpida que tiene un tiempo esperado lineal, pero que
en algunos casos puede tener tiempo ?(n
G
). Este mtodo no s*lo puede $allar la
mediana, sino el elemento que ocupa la posici*n kMsima. 1ara ello, se toma un
elemento pivote (normalmente el primero), / se divide el con)untos en dos subM
con)untos, seg.n los elementos sean ma/ores o menores que el pivote. El pivote a$ora
ocupar una posici*n p. +i p es igual a k, el n.mero buscado es el pivote0 si p es menor
que k, el n.mero buscado est en el primer subcon)unto, / si p es ma/or que k, el
n.mero buscado est en el segundo subcon)unto. Este mtodo se continua
recursivamente, $asta que se $alle el elemento buscado. El programa ser-a:
#include <stdio.h>
#include <stdlib.h>
int seleccionrapida(int *,int,int);
int k;
int main()
{
int num,a,m;
int *array;
scanf(" d",!num); "" #edir el tama$o del array
array%(int *)malloc(si&eof(int)*num);
for(a%';a<num;a(() "" )ar *alores al array
scanf(" d",!array+a,);
scanf(" d",!k); "" #edir el *alor k
k--; "" #or ir de ' a num-.
m%seleccionrapida(array,',num-.); "" #ara llamar a la funci/n
printf("d0n",m);
return(');
1
int seleccionrapida(int *array,int desde,int hasta)
{
int i,d,au2; "" i reali&a la b3s4ueda de i&4uierda a derecha
"" y 5 reali&a la b3s4ueda de derecha a i&4uierda.
for(i%desde(.,d%hasta; ; ) "" 6alores iniciales de la b3s4ueda.
{
for( ;i<%hasta !! array+i,<%array+desde,; i((); "" #rimera
b3s4ueda
for( ;d>%' !! array+d,>%array+desde,; d--); "" 7e8unda b3s4ueda
if(i<d) "" si no se han cru&ado9
{
au2%array+i,; "" :ntercambiar.
array+i,%array+d,;
array+d,%au2;
1
else "" si se han cru&ado9
break; "" salir del bucle.
1
if(d%%desde-.) "" 7i la se8unda b3s4ueda se sale del array
d%desde; "" es 4ue el pi*ote es el elemento
"" m;s pe4ue$o9 se cambia con <l mismo.
au2%array+d,; "" =olocar el pi*ote
array+d,%array+desde,; "" en su posici/n.
array+desde,%au2;
if(d%%k)
return(array+d,); "" >l pi*ote es el elemento buscado
else if(d>k)
return(seleccionrapida(array,desde,d-.)); "" ?uscar en el
primer array.
else return(seleccionrapida(array,d(.,hasta)); "" ?uscar
en el se8undo array.
1
4.- ALGORITMO VORAZ
1. ,-u. es un algorit%o /ora;0
1rimero debemos definir que es un algoritmo, esto es un con)unto de
operaciones / procedimientos que deben seguirse para resolver un
problema. Z la palabra vora que destru/e o consume algo
rpidamente, tambin que consume muc$o / con ansias.
;eniendo estas definiciones podemos decir que en cada paso, el
algoritmo escoge el me)or "pedao" que es capa de "comer" sin
preocuparse del futuro0 5unca des$ace una decisi*n /a tomada: una
ve incorporado un candidato a la soluci*n permanece a$- $asta el final0
/ cada ve que un candidato es rec$aado, lo es para siempre.
>esuelven problemas de optimiaci*n como por e)emplo, encontrar la
secuencia *ptima para procesar un con)unto de tareas por un
computador, $allar el camino m-nimo de un grafo, etc.
. Co%o <unciona
En cada paso se toma una decisi*n de la que estamos seguros. #as
decisiones tomadas nunca se reconsideran, el algoritmo termina
cuando no quedan decisiones por tomar. El algoritmo es correcto si
podemos garantiar que la soluci*n encontrada es siempre *ptima.
=ntervienen los siguientes elementos:
M En con)unto o lista de candidatos (tareas a procesar, vrtices del
grafo, etc)
M En con)unto de decisiones /a tomadas o candidatos /a escogidos
M Ena funci*n que determine si un con)unto de candidatos es una soluci*n al
problema, aunque no tiene por qu ser la *ptima.
M Ena funci*n que determina si un con)unto es completable, es decir, si
aadiendo a este con)unto nuevos candidatos es posible alcanar una
soluci*n al problema, suponiendo que esta e,ista.
M Ena funci*n de selecci*n que escoge el candidato a.n no
seleccionado que es ms prometedor.
M Ena funci*n ob)etivo que da el valorLcoste de una soluci*n (tiempo total del
proceso, la longitud del camino, etc) / que es la que se pretende ma,imiar o
minimiar.
#. E)e%plo1
+e desea pagar una cantidad de dinero a un cliente empleando el menor n.mero
posible de monedas. #os elementos del esquema son los siguientes:
Can'i'ato: con)unto finito de monedas de, por e)emplo, %, ', %( / G'
unidades, con una moneda de cada tipo por lo menos0
Solucin: con)unto de monedas cu/a suma es la cantidad a pagar0
Co%pleta3le: la suma de las monedas escogidas en un momento dado no
supera la cantidad a pagar0
<uncion 'e Seleccion: la moneda de ma/or valor en el con)unto de
candidatos a.n no considerados0
<uncin o3)eti/o: n.mero de monedas utiliadas en la soluci*n.
funcion voraz(C:conjunto):conjunto
{ C es el conjunto de todos los candidatos }
S <= vacio { S es el conjunto en el que se construye la solucion}
mientras solucion(S) y C <> vaciohacer
x <= el elemento de C que maximiza seleccionar(x)
C <= C {x}
si completable(S ! {x}) entonces S <= S ! {x}
si solucion(S)
entonces devolver S
si no devolver no hay solucion
BIBLIOGRAFIA
el [uille M #a Peb del Visual7asic. (s.f.). >ecuperado el %& de Fa/o de G(%I, de
$ttp:LLPPP.elguille.infoL
6lgoritmia \ !ivide / venceras. >ecuperado el %& de Fa/o del G(%I, de
$ttp:LLPPP.6lgoritmia.net
F+!5 concepos de algoritmos M Ficrosoft !eveloper 5etPork. (s.f.). >ecuperado
el %K de Fa/o de G(%H, de $ttp:LLmsdn.microsoft.comLesMclL
$ttp:LLt$ales.cica.esLrdL>ecursosLrd&&Led&&M((HHM(ILvoraNintrod.$tml
$ttp:LLes.Pikibooks.orgLPikiL6lgoritmiaL6lgoritmosNvoraces
$ttp:LLdis.um.esL]nmarinLtransparenciasMalgoritmosMvoracesM6E!M==.pdf
$ttp:LLdi((G.edv.uniovi.esL]daniLasignaturasLtransparenciasMleccion%K.1!@
$ttp:LLPPP.etnassoft.comLbibliotecaLelMesquemaMalgoritmicoMdelM
backtrakingL=ntroducci*n a las Estructuras de datos en ^ava. (s.f.).
Ftodos de resoluci*n de problemas. (s.f.).
programacionMane,oI.blogspot.com. (s.f.). $ttp:LLprogramacionM
ane,oI.blogspot.comLG(%%L(_Le)emploMresueltoMdeMbacktracking.$tml.
;cnicas de !iseo de 6lgoritmos en ^ava. (s.f.).
Pikipedia. (s.f.). $ttp:LLes.Pikipedia.orgLPikiLVueltaNatas.
PPP.programacion.com. (s.f.).
$ttp:LLPPP.programacion.comLarticuloLtutorialNbasicoNdeNprogramacionNenNprol
ogN'KLI`backtracking.

También podría gustarte