aboutsummaryrefslogtreecommitdiff
path: root/si/n4.lyx
blob: ce64e74ff5d3ab9a3c9c5877aff9b24909ab52f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
#LyX 2.3 created this file. For more info see http://www.lyx.org/
\lyxformat 544
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass book
\begin_preamble
\usepackage{amssymb}
\end_preamble
\use_default_options true
\begin_modules
algorithm2e
\end_modules
\maintain_unincluded_children false
\language spanish
\language_package default
\inputencoding auto
\fontencoding global
\font_roman "default" "default"
\font_sans "default" "default"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\use_microtype false
\use_dash_ligatures true
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_package amsmath 1
\use_package amssymb 1
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 1
\use_minted 0
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\is_math_indent 0
\math_numbering_side default
\quotes_style french
\dynamic_quotes 0
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header

\begin_body

\begin_layout Section
Búsqueda local
\end_layout

\begin_layout Standard
En muchos problemas, como el diseño de circuitos o la optimización de redes,
 solo importa el estado objetivo, no cómo se llega a él.
\end_layout

\begin_layout Standard
Los métodos que veremos operan con un único estado actual, no suelen recordar
 los caminos, usan muy poca memoria y pueden encontrar soluciones razonables
 en espacios de estados grandes o continuos en los que los algoritmos clásicos
 no son adecuados.
\end_layout

\begin_layout Standard
Podemos considerar el espacio de estados como un paisaje donde la posición
 es un estado y la elevación viene dada por una función objetivo a maximizar
 o minimizar; supondremos que a maximizar.
\end_layout

\begin_layout Standard
Para el 
\series bold
problema de las 8 reinas
\series default
, consistente en situar 8 reinas en un tablero de ajedrez de forma que ninguna
 esté en jaque, como cada reina debe estar en una columna, podemos representar
 los estados como una tupla con la fila en la que está cada reina; cada
 estado tendría 56 vecinos correspondientes a cambiar la posición de una
 reina y la función a minimizar sería el número de jaques, que habría que
 bajar a 0.
\end_layout

\begin_layout Subsection
Búsqueda local avara o ascensión de colinas
\end_layout

\begin_layout Standard
Se mueve en cada paso al vecino del estado actual con el valor objetivo
 más alto.
 A menudo se atasca en máximos locales; 
\series bold
crestas
\series default
, secuencias de máximos locales que dificultan mucho la navegación, y sobre
 todo en 
\series bold
mesetas
\series default
 o 
\series bold
terrazas
\series default
, áreas donde la función objetivo es plana.
\end_layout

\begin_layout Standard
Para evitar que se atasque en terrazas, se puede permitir un movimiento
 lateral aleatorio cuando no hay ningún movimiento ascendente.
 Esto lleva a un bucle infinito si el método alcanza un máximo local plano,
 por lo que se suele limitar el número de movimientos laterales consecutivos.
\end_layout

\begin_layout Standard
La 
\series bold
ascensión de colinas de reinicio aleatorio
\series default
 consiste en ejecutar la ascensión de colinas repetidamente con distintos
 estados iniciales.
 En espacios de estados finitos
\begin_inset Foot
status open

\begin_layout Plain Layout
En general cuando caer en un estado final tiene probabilidad no nula y ascender
 infinitamente tiene probabilidad nula.
\end_layout

\end_inset

, es completa con probabilidad 1, aunque no garantiza terminar, y es muy
 eficaz.
\end_layout

\begin_layout Subsection
Temple simulado
\end_layout

\begin_layout Standard
Para templar metal, este se calienta mucho para favorecer el movimiento
 de las partículas y se enfría gradualmente para que estas se estabilicen
 en estructuras cristalinas de baja energía.
 Para tratar de colar una bola en el hueco más profundo de una superficie
 con agujeros, esta se agita mucho para favorecer escapar de depresiones
 locales y se reduce gradualmente la fuerza para que la bola se estabilice
 en huecos profundos.
\end_layout

\begin_layout Standard
Esta idea la usa el algoritmo 
\begin_inset CommandInset ref
LatexCommand ref
reference "alg:sim-annealing"
plural "false"
caps "false"
noprefix "false"

\end_inset

 para resolver problemas.
\end_layout

\begin_layout Standard
\begin_inset Float algorithm
wide false
sideways false
status open

\begin_layout Plain Layout
\begin_inset ERT
status open

\begin_layout Plain Layout


\backslash
Entrada{Problema de espacio de estados sin costes $(V,A,s,F)$, función objetivo
 $f:V
\backslash
to
\backslash
mathbb R$ y {
\backslash
bf esquema} de temperaturas $e:
\backslash
mathbb N
\backslash
to
\backslash
mathbb{R}^{
\backslash
geq0}$ monótono decreciente.}
\end_layout

\begin_layout Plain Layout


\backslash
Salida{Solución $s
\backslash
in V$.}
\end_layout

\begin_layout Plain Layout


\backslash
SetKwFunction{rand}{rand}
\end_layout

\begin_layout Plain Layout


\backslash
Para{$t
\backslash
gets1$ en adelante}{
\end_layout

\begin_layout Plain Layout

	$T
\backslash
gets e(t)$
\backslash
;
\end_layout

\begin_layout Plain Layout

	
\backslash
lSSi{$T=0$}{
\backslash
Devolver $s$}
\end_layout

\begin_layout Plain Layout

	$
\backslash
{n_0,
\backslash
dots,n_{k-1}
\backslash
}
\backslash
gets
\backslash
{v
\backslash
in V:(s,v)
\backslash
in A
\backslash
}$
\backslash
;
\end_layout

\begin_layout Plain Layout

	
\backslash
Para{$i
\backslash
gets0$ 
\backslash
KwA $k-1$}{
\end_layout

\begin_layout Plain Layout

		$c
\backslash
gets n_{
\backslash
lfloor k
\backslash
rand{}
\backslash
rfloor}$
\backslash
;
\end_layout

\begin_layout Plain Layout

		$
\backslash
Delta E
\backslash
gets f(c)-f(e)$
\backslash
;
\end_layout

\begin_layout Plain Layout

		
\backslash
lSSi{$
\backslash
Delta E>0
\backslash
lor
\backslash
rand{}<e^{
\backslash
Delta E/T}$}{$s
\backslash
gets c$}
\end_layout

\begin_layout Plain Layout

	}
\end_layout

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_layout Plain Layout
\begin_inset Caption Standard

\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "alg:sim-annealing"

\end_inset

Temple simulado.
\end_layout

\end_inset


\end_layout

\end_inset


\end_layout

\begin_layout Subsection
Haz local
\end_layout

\begin_layout Standard
Se empieza con 
\begin_inset Formula $k$
\end_inset

 estados elegidos aleatoriamente y, en cada paso, se generan los sucesores
 de cada estado, se comprueba si alguno es objetivo para terminar y, si
 ninguno lo es, se toman los 
\begin_inset Formula $k$
\end_inset

 mejores sucesores de entre todos.
 Si hay poca diversidad entre los 
\begin_inset Formula $k$
\end_inset

 estados, esto no es mucho mejor que la ascensión de colinas, por lo que
 los nuevos estados se suelen elegir de forma estocástica.
\end_layout

\begin_layout Subsection
Algoritmos genéticos
\end_layout

\begin_layout Standard
Son una variante de la búsqueda de haz local estocástica.
 Cada estado, 
\series bold
individuo
\series default
 o 
\series bold
cromosoma
\series default
 se codifica como una cadena, normalmente de longitud finita, de un alfabeto
 finito, en la que cada símbolo es un 
\series bold
gen
\series default
.
 Las codificaciones más usadas son 
\series bold
binaria
\series default
 mediante cadenas de dígitos binarios, 
\series bold
entera
\series default
 mediante cadenas de enteros de algún conjunto finito, y 
\series bold
de orden
\series default
, en que la cadena es una permutación.
\end_layout

\begin_layout Standard
En cada paso hay una 
\series bold
población
\series default
 de 
\begin_inset Formula $k$
\end_inset

 estados generados aleatoriamente.
 Mediante un algoritmo de 
\series bold
selección
\series default
, se escogen 
\begin_inset Formula $k$
\end_inset

 individuos de la población, posiblemente repetidos, que podrán reproducirse.
 Estos se emparejan y cada pareja, con una probabilidad 
\begin_inset Formula $p_{c}$
\end_inset

, se sustituye por dos individuos hijos mediante un algoritmo de 
\series bold
cruce
\series default
.
 Finalmente, se usa un algoritmo de 
\series bold
mutación
\series default
 para mutar cada gen de cada individuo con una probabilidad 
\begin_inset Formula $p_{m}$
\end_inset

, y el resultado es la nueva población.
 Esto se repite hasta que haya un individuo en la población suficientemente
 bueno o pase bastante tiempo.
\end_layout

\begin_layout Standard
Los 
\series bold
operadores genéticos
\series default
 son los algoritmos de selección, cruce y mutación.
 Algunos algoritmos de selección:
\end_layout

\begin_layout Itemize

\series bold
Ruleta
\series default
: Para cada uno de los 
\begin_inset Formula $k$
\end_inset

 puestos, se elige un individuo con probabilidad proporcional a su valor
 por la función objetivo, su 
\series bold
idoneidad
\series default
 o 
\series bold
\emph on
\lang english
fitness
\series default
\emph default
\lang spanish
.
\end_layout

\begin_layout Itemize

\series bold
Torneo
\series default
: Se eligen 
\begin_inset Formula $2k$
\end_inset

 parejas por un algoritmo como la ruleta y se toma el de mayor idoneidad
 en cada una.
\end_layout

\begin_layout Standard
Algunos algoritmos de cruce:
\end_layout

\begin_layout Itemize

\series bold
Por un punto
\series default
: Se elige una posición al azar de las cadenas de los padres.
 Un hijo adopta la parte a la izquierda de un padre y la parte a la derecha
 del otro y el otro hijo al revés.
\end_layout

\begin_layout Itemize

\series bold
Por dos puntos
\series default
: Se eligen dos posiciones.
 Un hijo adopta los extremos de un padre y el centro del otro y el otro
 hijo al revés.
\end_layout

\begin_layout Standard
Algunos de mutación:
\end_layout

\begin_layout Itemize
Cambio de un gen aleatorio de un individuo por otro valor.
\end_layout

\begin_layout Itemize
Intercambio de dos genes del individuo.
\end_layout

\begin_layout Section
Búsqueda entre adversarios
\end_layout

\begin_layout Standard
Un 
\series bold
juego
\series default
 o 
\series bold
problema de búsqueda entre adversarios
\series default
 es un entorno competitivo en que los objetivos de distintos agentes están
 en conflicto.
 Se deben considerar las decisiones de los otros agentes, pero su imprevisibilid
ad puede generar muchas contingencias.
\end_layout

\begin_layout Standard
Consideramos juegos de suma cero (la suma del valor objetivo de cada agente
 es 0), de dos jugadores, por turnos, determinista y de información perfecta
 (entorno totalmente observable).
 Los jugadores son 
\family typewriter
max
\family default
, que mueve primero e intenta maximizar una cierta función utilidad 
\begin_inset Formula $u$
\end_inset

 de los estados terminales, y 
\family typewriter
min
\family default
, que intenta minimizar 
\begin_inset Formula $u$
\end_inset


\end_layout

\begin_layout Standard
Podemos representar un juego por una tupla 
\begin_inset Formula $(V,A,M,s,F,u)$
\end_inset

, donde 
\begin_inset Formula $(V,A)$
\end_inset

 es un grafo como el de la búsqueda clásica de espacios de estados pero
 en el que todos los nodos hoja son terminales; 
\begin_inset Formula $M\subseteq V$
\end_inset

 es un conjunto computable de 
\series bold
estados 
\family typewriter
max
\family default
\series default
 (en los que el turno es de 
\family typewriter
max
\family default
), cuyo complementario es el conjunto de 
\series bold
estados 
\family typewriter
min
\family default
\series default
 y tal que los sucesores de un estado 
\family typewriter
max
\family default
 son estados 
\family typewriter
min
\family default
 y viceversa; 
\begin_inset Formula $s\in M$
\end_inset

 es el estado inicial; 
\begin_inset Formula $F\subseteq V$
\end_inset

 es un conjunto computable de estados finales, y 
\begin_inset Formula $u:F\to\mathbb{R}$
\end_inset

 es una función de utilidad.
\end_layout

\begin_layout Subsection
Minimax
\end_layout

\begin_layout Standard
\begin_inset Float algorithm
wide false
sideways false
status open

\begin_layout Plain Layout
\begin_inset ERT
status open

\begin_layout Plain Layout


\backslash
Entrada{Juego $(V,A,M,s,F,u)$.}
\end_layout

\begin_layout Plain Layout


\backslash
Salida{Sucesor $s'$ óptimo.}
\end_layout

\begin_layout Plain Layout


\backslash
SetKwProg{Fn}{función}{}{fin}
\end_layout

\begin_layout Plain Layout


\backslash
SetKwFunction{minimax}{minimax}
\end_layout

\begin_layout Plain Layout


\backslash
Fn{
\backslash
minimax{$n$}}{
\end_layout

\begin_layout Plain Layout

	
\backslash
lSSi{$n
\backslash
in F$}{
\backslash
Devolver $u(n)$}
\end_layout

\begin_layout Plain Layout

	
\backslash
lEnOtroCasoSi{$n
\backslash
in M$}{
\backslash
Devolver$
\backslash
max
\backslash
{
\backslash
minimax{v}
\backslash
}_{(n,v)
\backslash
in A}$}
\end_layout

\begin_layout Plain Layout

	
\backslash
lEnOtroCaso{
\backslash
Devolver$
\backslash
min
\backslash
{
\backslash
minimax{v}
\backslash
}_{(n,v)
\backslash
in A}$}
\end_layout

\begin_layout Plain Layout

}
\end_layout

\begin_layout Plain Layout


\backslash
Devolver $s'$ con $(s,s')
\backslash
in A$ y $
\backslash
minimax{s'}$ máximo
\backslash
;
\end_layout

\end_inset


\end_layout

\begin_layout Plain Layout
\begin_inset Caption Standard

\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "alg:minimax"

\end_inset

Algoritmo minimax.
\end_layout

\end_inset


\end_layout

\end_inset


\end_layout

\begin_layout Standard
El 
\series bold
minimax
\series default
 (algoritmo 
\begin_inset CommandInset ref
LatexCommand ref
reference "alg:minimax"
plural "false"
caps "false"
noprefix "false"

\end_inset

) intenta maximizar el valor final de 
\begin_inset Formula $u$
\end_inset

 anticipándose a que el oponente intentará minimizarlo, y es óptimo.
 Su complejidad en tiempo es 
\begin_inset Formula $O(b^{m})$
\end_inset

, y su complejidad en espacio es 
\begin_inset Formula $O(bm)$
\end_inset

 si se generan todos los sucesores de un nodo a la vez u 
\begin_inset Formula $O(m)$
\end_inset

 si se generan uno a uno, donde 
\begin_inset Formula $b$
\end_inset

 es el factor de ramificación y 
\begin_inset Formula $m$
\end_inset

 es la profundidad máxima del árbol de búsqueda.
\end_layout

\begin_layout Standard
El algoritmo se puede extender a juegos de más de dos jugadores; en este
 caso la utilidad sería de la forma 
\begin_inset Formula $V\to\mathbb{R}^{n}$
\end_inset

, donde 
\begin_inset Formula $n$
\end_inset

 es el número de jugadores y 
\begin_inset Formula $u(n_{i})$
\end_inset

 es el valor objetivo del nodo 
\begin_inset Formula $u$
\end_inset

 para el jugador 
\begin_inset Formula $i$
\end_inset

, y en vez de 
\begin_inset Formula $M$
\end_inset

 tendríamos una función computable 
\begin_inset Formula $J:V\to\{1,\dots,n\}$
\end_inset

 que indica de quién es el turno y tal que para 
\begin_inset Formula $(i,j)\in A$
\end_inset

, 
\begin_inset Formula $J(j)\equiv J(i)+1\bmod n$
\end_inset

.
 Entonces, en cada nodo 
\begin_inset Formula $u$
\end_inset

 no terminal, nos quedaríamos con el valor minimax de los sucesores con
 coordenada 
\begin_inset Formula $J(u)$
\end_inset

-ésima máxima, y el algoritmo seguiría siendo óptimo aun cuando el juego
 no fuera de suma cero.
\end_layout

\begin_layout Subsection
Poda alfa-beta
\end_layout

\begin_layout Standard
Es posible acelerar el algoritmo minimax con 
\series bold
poda alfa-beta
\series default
 (algoritmo 
\begin_inset CommandInset ref
LatexCommand ref
reference "alg:alpha-beta"
plural "false"
caps "false"
noprefix "false"

\end_inset

).
 La idea es que 
\begin_inset Formula $\alpha$
\end_inset

 es el mayor valor encontrado para 
\family typewriter
max
\family default
 y 
\begin_inset Formula $\beta$
\end_inset

 es el menor valor encontrado para 
\family typewriter
min
\family default
.
 Entonces, si 
\family typewriter
MinValor
\family default
 encuentra un 
\begin_inset Formula $v\leq\alpha$
\end_inset

, el valor que devuelva será no mayor a 
\begin_inset Formula $\alpha$
\end_inset

 porque está minimizando, y no merece la pena seguir porque 
\family typewriter
MaxValor
\family default
, que llamó a 
\family typewriter
MinValor
\family default
, descartaría el valor.
 Del mismo modo, si 
\family typewriter
MaxValor
\family default
 encuentra un 
\begin_inset Formula $v\geq\beta$
\end_inset

, termina porque su valor de retorno sería descartado por 
\family typewriter
MinValor
\family default
.
\end_layout

\begin_layout Standard
\begin_inset Float algorithm
wide false
sideways false
status open

\begin_layout Plain Layout
\begin_inset ERT
status open

\begin_layout Plain Layout


\backslash
Entrada{Juego $(V,A,M,s,F,u)$.}
\end_layout

\begin_layout Plain Layout


\backslash
Salida{Sucesor $s'$ óptimo.}
\end_layout

\begin_layout Plain Layout


\backslash
SetKwProg{Fn}{función}{}{fin}
\end_layout

\begin_layout Plain Layout


\backslash
SetKwFunction{MaxValor}{MaxValor}
\end_layout

\begin_layout Plain Layout


\backslash
SetKwFunction{MinValor}{MinValor}
\end_layout

\begin_layout Plain Layout


\backslash
Fn{
\backslash
MaxValor{$n,
\backslash
alpha,
\backslash
beta$}}{
\end_layout

\begin_layout Plain Layout

	
\backslash
lSSi{$n
\backslash
in F$}{
\backslash
Devolver $u(n)$}
\end_layout

\begin_layout Plain Layout

	$v
\backslash
gets-
\backslash
infty$
\backslash
;
\end_layout

\begin_layout Plain Layout

	
\backslash
Para{$i:(n,i)
\backslash
in A$}{
\end_layout

\begin_layout Plain Layout

		$v
\backslash
gets
\backslash
max
\backslash
{v,
\backslash
MinValor{$i,
\backslash
alpha,
\backslash
beta$}
\backslash
}$
\backslash
;
\end_layout

\begin_layout Plain Layout

		
\backslash
lSSi{$v
\backslash
geq
\backslash
beta$}{
\backslash
Devolver $v$}
\end_layout

\begin_layout Plain Layout

		$
\backslash
alpha
\backslash
gets
\backslash
max
\backslash
{
\backslash
alpha,v
\backslash
}$
\backslash
;
\end_layout

\begin_layout Plain Layout

	}
\end_layout

\begin_layout Plain Layout

	
\backslash
Devolver $v$
\backslash
;
\end_layout

\begin_layout Plain Layout

}
\end_layout

\begin_layout Plain Layout


\backslash
Fn{
\backslash
MinValor{$n,
\backslash
alpha,
\backslash
beta$}}{
\end_layout

\begin_layout Plain Layout

	
\backslash
lSSi{$n
\backslash
in F$}{
\backslash
Devolver $u(n)$}
\end_layout

\begin_layout Plain Layout

	$v
\backslash
gets+
\backslash
infty$
\backslash
;
\end_layout

\begin_layout Plain Layout

	
\backslash
Para{$i:(n,i)
\backslash
in A$}{
\end_layout

\begin_layout Plain Layout

		$v
\backslash
gets
\backslash
min
\backslash
{v,
\backslash
MaxValor{$i,
\backslash
alpha,
\backslash
beta$}
\backslash
}$
\backslash
;
\end_layout

\begin_layout Plain Layout

		
\backslash
lSSi{$v
\backslash
leq
\backslash
alpha$}{
\backslash
Devolver $v$}
\end_layout

\begin_layout Plain Layout

		$
\backslash
beta
\backslash
gets
\backslash
min
\backslash
{
\backslash
beta,v
\backslash
}$
\backslash
;
\end_layout

\begin_layout Plain Layout

	}
\end_layout

\begin_layout Plain Layout

	
\backslash
Devolver $v$
\backslash
;
\end_layout

\begin_layout Plain Layout

}
\end_layout

\begin_layout Plain Layout

Tomar el sucesor $s'$ de $s$ asociado al resultado de 
\backslash
MaxValor{$n,-
\backslash
infty,+
\backslash
infty$}
\backslash
;
\end_layout

\end_inset


\end_layout

\begin_layout Plain Layout
\begin_inset Caption Standard

\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "alg:alpha-beta"

\end_inset

Minimax con poda alfa-beta.
\end_layout

\end_inset


\end_layout

\end_inset


\end_layout

\begin_layout Standard
La eficiencia de minimax con poda alfa-beta es 
\begin_inset Formula $O(b^{m/2})$
\end_inset

 en el caso mejor y 
\begin_inset Formula $O(b^{m})$
\end_inset

 en el caso peor, y la diferencia es muy dependiente del orden en que se
 examinan los sucesores de cada nodo.
 En el caso medio tenemos 
\begin_inset Formula $O(b^{3m/4})$
\end_inset

.
\end_layout

\begin_layout Subsection
Heurísticas
\end_layout

\begin_layout Standard
Buscar hasta los estados terminales no suele ser práctico porque los movimientos
 deben hacerse en una cantidad razonable de tiempo, por lo que se usan heurístic
as 
\begin_inset Formula $h:V\to\mathbb{R}$
\end_inset

 para sustituir a 
\begin_inset Formula $u$
\end_inset

 y un test de corte 
\begin_inset Formula $D\subseteq V\times\mathbb{N}$
\end_inset

 (computable) que decide cuándo parar la búsqueda y aplicar 
\begin_inset Formula $h$
\end_inset

 según el estado y la profundidad.
 
\end_layout

\begin_layout Standard
Una opción es parar a una profundidad fija, elegida para que el tiempo usado
 no exceda lo permitido por las reglas del juego.
 Un test más sofisticado solo para cuando encuentra una posición suficientemente
 estable, en la que sea de esperar que la heurística sea buena.
\end_layout

\begin_layout Subsection
Juegos estocásticos
\end_layout

\begin_layout Standard
Muchos juegos incluyen un elemento aleatorio.
 Esto se puede modelar como que entre un nivel de nodos 
\family typewriter
max
\family default
 y uno de nodos 
\family typewriter
min
\family default
, y viceversa, hay un nivel de nodos de posibilidad cuyos sucesores son
 posibles alternativas, y en minimax, en esos nodos, en vez de tomar el
 máximo o el mínimo, tomamos la media ponderada a la probabilidad de cada
 suceso.
\end_layout

\end_body
\end_document