Subido por Carlos Herrera Cata

COMPLEJIDDAD ALGORITMICA TEORIA Y PRACTICA-

Anuncio
!"#$%&'()*)+,%-"./0#(1*2+)&+%*+3&"./*+*+%*+4.510(1*+
!"#$%&'()#*"#+,-.)#*"#/%0&123,4)#5"#/%0&123,4)#6"#/%7(8##
9.:;,&8:0(0#0,#+(#+(23.(#
<0:=:>:%#0,#?18:>(#@#A(',BC':>(8#
>D#68'&%=18:>%#?>%"#EC.>F,4#8D.##
GHIJK#+(#+(23.("#L,.,&:=,#
#
6&78#&9#
#
<.#,8',#'&(M(7%#8,#N&,8,.'(.#O(8#F,&&(B:,.'(8#*6++#
@# ++6*#P3,#=(>:O:'(.#,O#(.CO:8:8#0,#>%BNO,7:0(0#0,#
(NO:>(>:%.,8#'(.'%#8,>3,.>:(O,8#>%B%#N(&(O,O(8"#+(#
0,8>&:N>:-.# 0,O# B%0%# 0,# 38%# 8,# &,(O:4(# B,0:(.',#
,O#,8'30:%#0,#3.#>(8%#N&C>':>%"#<O#,7,BNO%#,O,2:0%#
F(# 8:0%# ,O# Q&%MO,B(# 0,# O(# A%>F:O(# RDK"# +(#
&,8%O3>:-.# 0,O# B:8B%# 8,# (M%&0(# B,0:(.',# O(#
'S>.:>(#0,#/(B:=:>(>:-.#@#6>%'(>:-.)#N&,8,.'(.0%#
0%8# %N>:%.,8# 0,# :BNO,B,.'(>:-.T# &,>3&8:;(# @#
N(&(O,O("#
+(# N&:.>:N(O# (N%&'(>:-.# 0,O# 38%# 0,# ,8'(8#
F,&&(B:,.'(8# ,.# O(# 0%>,.>:(# ,8# ,8'(MO,>,&# 3.#
N3,.',# ,.'&,# ,O# (.CO:8:8# ',-&:>%# 0,# O(# >%BNO,7:0(0#
0,# O%8# (O2%&:'B%8# @# ,O# (.CO:8:8# N&C>':>%# 0,# O%8#
N(&CB,'&%8# 0,# &,.0:B:,.'%# 0,# O%8# N&%2&(B(8)#
8:BNO:=:>(.0%#O(#O(M%&#0,#,7,>3>:-.)#&,>%O,>>:-.#@#
,8'30:%#0,#&,83O'(0%8#>%BN3'(>:%.(O,8"#
:;! <90.")811(=9+
<.# O%8# NO(.,8# 0,# ,8'30:%# ;:2,.',8# ,.# O(#
9.:;,&8:0(0# 0,# +(# +(23.(# 8,# >3,.'(# >%.#
(8:2.('3&(8# 0,# >%.',.:0%8# &,O(>:%.(0%8# >%.# O(#
Q&%2&(B(>:-.# Q(&(O,O(# @# $:8'&:M3:0(# UVW# P3,# 8,#
>%.>&,'(.# ,.# O(8# (8:2.('3&(8# %N'(':;(8T#
!"#$"%&%'()*+ ,*+ !%"%-,-#+ .# @# !"#$"%&%'()*+ ,*+
!%"%-,-#+..+@#!"#$"%&%'()*+/(01"(23(4%"##
<.#,OO(8)#O%8#(O3B.%8#0,M,.#&,(O:4(&#N&C>':>(8#
0,# O(M%&('%&:%# P3,# :BNO:>(.# ,O# 38%# 0,# O%8# 0%8#
N(&(0:2B(8# 0,# N&%2&(B(>:-.# 0,# BCP3:.(8#
N(&(O,O(8# ,8'C.0(&T# ,O# Q(8%# 0,# A,.8(7,8# @# O(#
A,B%&:(#*%BN(&':0("##<OO%#83N%.,#O(#&,(O:4(>:-.#
0,# ,XN,&:B,.'%8# P3,# N,&B:'(.# >%.=:&B(&# P3,# ,O#
(O2%&:'B%#N(&(O,O%#P3,#8,#F(#0:8,Y(0%#N&%N%&>:%.(#
(O23.(# ;,.'(7(# =&,.',# (O# (O2%&:'B%# 8,>3,.>:(O"# <O#
38%#0,#O(8#F,&&(B:,.'(8# *6++# @# ++6*# =(>:O:'(# ,8'(#
O(M%&"#
<.# ,8',# '&(M(7%)# 8,# N&,8,.'(# 3.# ,7,BNO%# N(&(#
:O38'&(&# >-B%# 8,# 38(&1(.# O(8# F,&&(B:,.'(8# *6++# @#
++6*# ,.# O(# 0%>,.>:(# 0,# Z!"#$"%&%'()*+ ,*+
!%"%-,-#["# <O# N&%MO,B(# P3,# 8,# F(# >%.8:0,&(0%# ,8#
,O##Q&%MO,B(#0,#O(#A%>F:O(#RDK#UGW"#E,#F(#%N'(0%#
N%&# 3.# N&%MO,B(# 0,# %N':B:4(>:-.# >%BM:.('%&:(#
N%&P3,# ':,.,.# 3.(# 2&(.# '&(8>,.0,.>:(# ,.# '%0%8#
(P3,OO%8# 8,>'%&,8# N&%03>':;%8# @# 383(&:%8# 0,#
8%='\(&,# P3,# 8,# 0,0:P3,.# (O# 0,8(&&%OO%# 0,#
(NO:>(>:%.,8# 0,# (@30(# (# O(# '%B(# 0,# 0,>:8:%.,8# @#
%N':B:4(>:-.#0,#&,>3&8%8"#$(0%#P3,#,O#%M7,':;%#0,#
,8',#'&(M(7%#,8#B%8'&(&#O(#3':O:0(0#0,O#8%='\(&,#,.#
O(# 0%>,.>:(# 0,# %N':B:4(>:-.# B(',BC':>()# 8-O%# 8,#
:.>O3@,.# O%8# >%.%>:B:,.'%8# ,O,B,.'(O,8#
.,>,8(&:%8# N(&(# ,BN,4(&# (# '&(M(7(&# >%.# (BM%8#
N(P3,',8"#
<.# ,O# (N(&'(0%# 8:23:,.',# 8,# N&,8,.'(.# O(8#
F,&&(B:,.'(8# *6++# @# ++6*"# <.# O(# ',&>,&(# 8,>>:-.#
8,# 0,=:.,# ,O# >(8%# 0,# ,8'30:%# @# 8,# # N&,8,.'(.# 0%8#
(N&%X:B(>:%.,8# N(&(# 83# &,8%O3>:-.T# 8,>3,.>:(O# @#
N(&(O,O()# 8,# 0,8>&:M,# >-B%# 8,# :.8'&3B,.'(# ,O#
>-0:2%# @# >-B%# :.',&N&,'(&# O%8# &,83O'(0%8"#
?:.(OB,.',#8,#,XN%.,.#O(8#>%.>O38:%.,8#@#'&(M(7%8#
=3'3&%8"#
>;! ?*7+@&..*#(&90*7+!,??+A+??,!+
<O# (.CO:8:8# 0,# >%BNO,7:0(0# 0,# 3.# (O2%&:'B%#
N&%03>,# >%B%# &,83O'(0%# 3.(# Z53*'()*+ 4,+
'#&6-,7(4%4[# P3,# 0(# 3.(# (N&%X:B(>:-.# 0,O#
.]B,&%# 0,# %N,&(>:%.,8# P3,# &,(O:4("# +(#
F,&&(B:,.'(# *6++# U^W# N,&B:',# (.%'(&# >%.# 0:>F(#
=-&B3O(#0,#>%BNO,7:0(0#,O#>-0:2%#*#P3,#:BNO(.'(#
,O# (O2%&:'B%"# # Q%&# ,7,BNO%)# N(&(# ,O# >OC8:>%#
N&%03>'%#0,# B('&:>,8# >3(0&(0(8# *# _# 6`a)# 0%.0,#
6#@#a#8%.#B('&:>,8#0,#0:B,.8:-.#b`b)#,O#>-0:2%#
0,# O(# OO(B(0(# (O# N&%>,0:B:,.'%# 8,# (.%'(&1(# 0,# O(#
8:23:,.',#=%&B(T#
#
#pragma cll mp mp[0] + mp[1]*N + \
mp[2]*N*N + mp[3]*N*N*N
MatrixProduct(A, B, C, N);
#pragma cll end mp
B>C+
D(70&#*7+)(70.(E8()"7+A+$*.*%&%"7+
#
$%.0,#89#_#BNURW)#8:#_#BNUKW)#8;+_#BNUIW#@#
*G# _# BNUGW# 8%.# O(8# >%.8'(.',8# (8%>:(0(8# (# O(#
=-&B3O(# 0,# >%BNO,7:0(0# 0,O# (O2%&:'B%#
c 8 R ! 8K < ! 8 I < I ! 8G < G d"#
+%8# ;(O%&,8# 0,# 0:>F(8# >%.8'(.',8)# N(&(# 3.(#
(&P3:',>'3&(# 0(0()# 8,# >(O>3O(.# B,0:(.',# &,2&,8:-.#
O:.,(O# N%&# ++6*"# ++6*# ,8# 3.(# F,&&(B:,.'(#
,8'(018':>(# M(8(0(# ,.# /# UIW# P3,# (.(O:4(# O%8# 0('%8#
(N%&'(0%8# N%&# O(# ,7,>3>:-.# 0,O# >-0:2%#
:.8'&3B,.'(0%#B,0:(.',#*6++"##
F;! !*7"+)&+&708)("2+G%+4."E%&#*+)&+%*+
H"1@(%*+IJ:+
*%.8:0,&,B%8# O(# 8:23:,.',# 0,=:.:>:-.# 0,O#
Q&%MO,B(#0,#O(#A%>F:O(#RDKT#
ZE,#0:8N%.,#0,#3.(#B%>F:O(#0,#>(N(>:0(0#8+#@#
0,# 3.# >%.73.'%# 0,# <# %M7,'%8"# E,# 83N%.,# P3,# O%8#
%M7,'%8# .%# 8,# N3,0,.# =&(2B,.'(&# ,.# '&%4%8# BC8#
N,P3,Y%8)#(81#N3,8)#8,#N3,0,#0,>:0:&#8:#8,#'%B(#3.#
%M7,'%# %# 8:# 8,# 0,7()# N,&%# .%# 8,# N3,0,# '%B(&# 3.(#
=&(>>:-.# 0,# 3.# %M7,'%"# E3N-.2(8,# (0,BC8)# P3,# ,O#
%M7,'%# =+ ':,.,# M,.,=:>:%# 2=+ @# N,8%# 6=)# N(&(#
=>:?;?@@@?<"# # <O# N&%MO,B(# >%.8:8',# ,.# (;,&:23(&#
P3S# %M7,'%8# 8,# F(.# 0,# :.8,&'(&# ,.# O(# B%>F:O(# 8:.#
,X>,0,&#83#>(N(>:0(0)#0,#B(.,&(#P3,#,O#M,.,=:>:%#
P3,#8,#%M',.2(#8,(#BCX:B%["##
E3# =%&B3O(>:-.# >%B%# 3.# N&%MO,B(# 0,#
%N':B:4(>:-.#,8T#
<
&%A
!2 A
=
=
#
= !K
<
837,'%#(T# #####
!6 A
=
=
!8 #
= !K
##################### A= ! !R)K" # = ! !K)""") < " #
+(# /(B:=:>(>:-.# @# 6>%'(>:-.# UKW# ,8# 3.#
BS'%0%# 2,.,&(O# P3,# N,&B:',# &,8%O;,&# 3.# (BNO:%#
&(.2%# 0,# N&%MO,B(8# 0,# %N':B:4(>:-.#
>%BM:.('%&:("# +(# 8%O3>:-.# 0,# 3.# N&%MO,B(#
>%.8:8',# ,.# 3.# ;,>'%&# 0,# ,.',&%8# P3,# >3BNO,# 3.#
.]B,&%# 0,# &,8'&:>>:%.,8# @# %N':B:4(# 3.(# =3.>:-.#
%M7,':;%"# +(# =3.>:-.# %M7,':;%# 0,M,# 8,&#
B(X:B:4(0(#%#B:.:B:4(0("#!
$(0%# P3,# ,O# C&,(# 0,# 8%O3>:%.,8# >%.':,.,# 3.#
.]B,&%# 0,# ,O,B,.'%8# ,XN%.,.>:(O)# ,8# :BN%8:MO,#
,XNO%&(&# '%0(8# O(8# 8%O3>:%.,8# ,.# 3.# ':,BN%#
&(4%.(MO,# N(&(# N&%MO,B(8# 2&(.0,8"# +(# 'S>.:>(# 0,#
/(B:=:>(>:-.# @# 6>%'(>:-.# :.',.'(# &,03>:&# ,O#
.]B,&%# 0,# 8%O3>:%.,8# =(>':MO,# N%&# ,XNO%&(>:-.#
8:8',BC':>(# 0,O# C&,(# 0,# 8%O3>:-."# +%8# (O2%&:'B%8#
0,# /(B:=:>(>:-.# @# 6>%'(>:-.# 0:;:0,.# ,O# C&,(# 0,#
8%O3>:-.# N(8%# N%&# N(8%# @# >(O>3O(.# 3.(# >%'(# 0,O#
N%8:MO,#;(O%&#0,#(P3,OO(8#8%O3>:%.,8#P3,#N30:,&(.#
,.>%.'&(&8,#BC8#(0,O(.',"#E:#O(#>%'(#B3,8'&(##P3,#
>3(OP3:,&(# 0,# ,8'(8# 8%O3>:%.,8# ':,.,# P3,# 8,&#
.,>,8(&:(B,.',#N,%&#P3,#O(#B,7%&#8%O3>:-.#F(OO(0(#
F(8'(#,O#B%B,.'%)#,.'%.>,8#.%#.,>,8:'(B%8#8,23:&#
,XNO%&(.0%#,8'(#N(&',#0,O#C&M%O"#Q%&#O%#2,.,&(O)#,O#
>CO>3O%# 0,# >%'(8# 8,# >%BM:.(# >%.# 3.# &,>%&&:0%# ,.#
(.>F3&(#%#,.#N&%=3.0:0(0"##
<.# O%8# NC&&(=%8# 8:23:,.',8# 8,# N&,8,.'(.# 0%8#
:BNO,B,.'(>:%.,8)# 3.(# 8,>3,.>:(O# ,.# *# @# 3.(#
N(&(O,O(#>%.#AQ!)#0,#3.#(O2%&:'B%#P3,#&,83,O;,#,O#
Q&%MO,B(# 0,# O(# A%>F:O(# B,0:(.',# O(# 'S>.:>(# 0,#
/(B:=:>(>:-.#@#6>%'(>:-."#
F;:;!<#$%&#&90*1(=9+D&18&91(*%++
<O#6O2%&:'B%#K#B3,8'&(#,O#>-0:2%#N(&(#&,8%O;,&#,O#
N&%MO,B(# 0,# =%&B(# &,>3&8:;("# <O# .]B,&%# 0,#
%M7,'%8#(#:.8,&'(&#,.#O(#B%>F:O(#8,#(OB(>,.(#,.#O(#
;(&:(MO,# <)# ,.# O(8# ;(&:(MO,8# B# @# 6# 8,# 23(&0(.# O%8#
N,8%8# @# O%8# M,.,=:>:%8# 0,# >(0(# 3.%# 0,# ,OO%8)#
B:,.'&(8# P3,# C# &,N&,8,.'(# O(# >(N(>:0(0"# Q3,8'%#
P3,# 8,# '&('(# 0,# 3.# N&%MO,B(# 0,# B(X:B:4(>:-.# 8,#
0(# ,O# ;(O%&# :.:>:(O# 0,# D!# (# O(# ;(&:(MO,# P3,#
(OB(>,.(# O(# B,7%&# 8%O3>:-.# ,.>%.'&(0(# F(8'(# ,O#
B%B,.'%#2,01E#-#cO1.,(8#K#(#Vd"#
<.'&,#O(8#O1.,(8#H#@#KH#8,#0,=:.,#O(#=3.>:-.#0,#
(>%'(>:-.# c-#B,"F66,"d"# E,# 3':O:4(# O(# B:8B(#
=3.>:-.#'(.'%#N(&(#>(O>3O(&#O(#>%'(#:.=,&:%&#>%B%#O(#
>%'(# 83N,&:%&"# +(# >%'(# :.=,&:%&# 8,# 0,=:.,# >%B%# ,O#
BCX:B%# M,.,=:>:%# P3,# 8,# N3,0,# %M',.,&# N(&(# 3.#
83MN&%MO,B(# 0(0%"# A:,.'&(8# P3,# O(# >%'(# 83N,&:%&#
:.>O3@,# O(# N(&',# N&%N%&>:%.(O# 0,O# M,.,=:>:%# 0,O#
]O':B%# %M7,'%# P3,# .%# 8,# N30%# :.8,&'(&# ,.# O(#
B%>F:O("#
+(#=3.>:-.# =*%6#cO1.,(8#IReG^d#:BNO,B,.'(#,O#
(O2%&:'B%# 0,# /(B:=:>(>:-.# @# 6>%'(>:-.#0,# =%&B(#
&,>3&8:;("#<.#O(#O1.,(#If#8,#&,(O:4(#O(#OO(B(0(#P3,#
,8'30:(# O(# N%8:M:O:0(0# 0,# :.8,&'(&# ,O# %M7,'%# g)#
B:,.'&(8# P3,# ,.# O(# O1.,(# GR# 8,# >%.8:0,&(# 83# .%#
:.>O38:-."#$,#O(8#O1.,(8#II#(#O(#Ih#8,#:BNO,B,.'(#
O(#>%.0:>:-.#P3,#(>'3(O:4(#O%8#;(O%&,8#0,#O(#B,7%&#
8%O3>:-.#c2,01E#-d#,.>%.'&(0(#F(8'(#,O#B%B,.'%"#
<8'(B%8# :.',&,8(0%8# ,.# >%.%>,&# ,O#
>%BN%&'(B:,.'%# 0,O# (O2%&:'B%)# >%.>&,'(B,.',# O(#
N&,23.'(# P3,# .%8# 238'(&1(# &,8N%.0,&# ,8# i>3C.'%8#
.%0%8# 0,O# ,8N(>:%# 0,# M]8P3,0(# 8,# ;:8:'(.# N(&(#
,.>%.'&(&#O(#B,7%&#8%O3>:-.j"#
<K+L".9*)*7+)&+G97&M*9N*+O9(P&.7(0*.(*+)&+%*+<9Q".#50(1*+
#
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!
"#!
B>B+
/* …ficheros de cabecera */
number N, M;
number w[MAX], p[MAX];
number bestSol = -INFINITY;
#pragma cll code double numvis;
void lowerUpper(number k, number C, number P,number *L, number *U) {
number i, weig, prof;
if (C < 0) {*L = -INFINITY; *U = -INFINITY; }
else {
for(i=k, weig = 0, prof = P; weig <= C; i++)
{weig += w[i]; prof += p[i];}
i--;
weig -= w[i]; prof -= p[i];
*L = prof; *U = prof+(p[i]*(C-weig))/w[i];
}
}
number knap(number k, number C, number P) {
number L, U, next;
if (k < N) {
lowerUpper(k,C,P,&L,&U);
if (bestSol < L) {
bestSol = L;
}
if (bestSol < U) { /* L <= bestSol <= U */
next = k+1;
knap(next, C - w[k], P + p[k]);
knap(next, C, P);
#pragma cll code numvis += 2 ;
}
}
return bestSol;
}
int main(int argc, char ** argv) {
number sol;
readKnap(data);
#pragma cll code double numvis = 0.0;
#pragma cll kps kps[0]*unknown(numvis) posteriori numvis
/* obj. sig., capacidad rest., beneficio */
sol = knap(
0,
M,
0);
#pragma cll end kps
printf("\nsol = ", sol);
#pragma cll report all
return 0;
$!
6O2%&:'B%#I"! !BNO,B,.'(>:-.#E,>3,.>:(O#&,>3&8:;(#(.%'(0(#
Q(&(#,OO%#(.%'(B%8#,O#>-0:2%#>%.#0:&,>':;(8#0,#
*6++"#+(#O1.,(#h#O,#0:>,#(# *6++#P3,#8,#;(#(#0,=:.:&#
3.(# ;(&:(MO,# 0,# ':N%# double# N(&(# (OB(>,.(&# ,O#
.]B,&%# 0,# .%0%8# ;:8:'(0%8)# *3&G(0"# # 6# 0:>F(#
;(&:(MO,# 8,# O,# 0(# :.:>:(OB,.',# ,O# ;(O%&# >,&%# cO1.,(#
VRd"# +(# 0:&,>':;(# '#4,+ 0,# *6++# N&%N%&>:%.(# O(#
N%8:M:O:0(0# 0,# :.8,&'(&# >-0:2%# =3,.',# (O# N&%2&(B(#
(.%'(0%"# <8',# >-0:2%# .%# B%0:=:>(# ,O# N&%2&(B(#
%&:2:.(O)#8-O%#8,#3':O:4(#,.#O(8#8,.',.>:(8# *6++"#+(#
>(0,.(# '--# P3,# 8,# >%O%>(# 0,8N3S8# 0,# O(# N(O(M&(#
&,8,&;(0(##pragma#O,#:.0:>(#(O#>%BN:O(0%&#0,#*#
P3,# 8,# '&('(# 0,# 3.(# 0:&,>':;(# N(&(# # ,O# >%BN:O(0%&#
0,#*6++"#E:#.%#8,#0:8N%.,#0,O#B:8B%)#8:BNO,B,.',#
8,#:.',&N&,'(#>%B%#3.#>%B,.'(&:%"#
+(# O1.,(# VK# >&,(# 3.# ,XN,&:B,.'%# *6++# '1N:>%"#
<O# :0,.':=:>(0%&# =60# ,8N,>:=:>(# 83# .%BM&,"# <8',#
,XN,&:B,.'%# B:0,# ,O# ':,BN%# 0,# ,7,>3>:-.# 0,# O(8#
8,.',.>:(8# ,.'&,# O(8# 0:&,>':;(8# 0,# :.:>:%# @#
=:.(O:4(>:-.# cO1.,(# VVd"# <O# pragma cll end
;(# 8,23:0%# 0,O# .%BM&,# 0,O# ,XN,&:B,.'%# @# F(>,#
P3,#,O#>&%.-B,'&%#0,#*6++#8,#N(&,)#8,#23(&0,.#O%8#
':,BN%8#@#8,#N&,N(&,#N(&(#O(#N&-X:B(#,7,>3>:-."##
+(# =-&B3O(# P3,# 8:23,# (O# :0,.':=:>(0%&# 0,O#
,XN,&:B,.'%# =60# cO1.,(# VKd# F(# 0,# 8:.',':4(&# O(#
B>R+
D(70&#*7+)(70.(E8()"7+A+$*.*%&%"7+
#
=-&B3O(#0,#>%BNO,7:0(0#P3,#.%8%'&%8#>&,,B%8#P3,#
0,8>&:M,#,O#>%BN%&'(B:,.'%#0,O#':,BN%"#68%>:(0(8#
(# O(# =-&B3O(# 8,# ':,.,.# O(8# >%.8'(.',8#
g8NURW)k)gN8U:W"#+(#8:.'(X:8#0,# *6++#&,P3:,&,#P3,#
8,#3':O:>,#,O#.%BM&,#0,O#,XN,&:B,.'%#N(&(#:.0,X(&#
O(8# >%.8'(.',8# (8%>:(0(8# >%.# 83# =-&B3O(# 0,#
>%BNO,7:0(0"# <8'(8# >%.8'(.',8# N3,0,.# 8,&#
,;(O3(0(8#>%.#O(#F,&&(B:,.'(#++6*"#
b3,8'&(# :.'3:>:-.# .%8# 0:>,# P3,# ,O# ':,BN%#
:.;,&':0%# N%&# ,O# (O2%&:'B%# 0,# /(B:=:>(>:-.# @#
6>%'(>:-.# ,8'C# &,O(>:%.(0%# >%.# ,O# .]B,&%# 0,#
.%0%8#0,O#,8N(>:%#0,#M]8P3,0(#P3,#8,#;:8:'(."#681#
N3,8)#.3,8'&(#=-&B3O(#8,#F(#0,#,8>&:M:&#,.#'S&B:.%8#
0,#O(#;(&:(MO,#*3&G(0#e#.]B,&%#0,#.%0%8#;:8:'(0%8"#
E:.# ,BM(&2%)# ,O# ;(O%&# =:.(O# 0,# *3&G(0# 8-O%# 8,#
>%.%>,&C# 3.(# ;,4# &,83,O'%# ,O# N&%MO,B()# ,8'%# ,8#
>3(.0%# (>(M,# O(# OO(B(0(# (# =*%6H9?C?9I"# Q%&# O%#
'(.'%)#,.#O(#=-&B3O(#0,#>%BNO,7:0(0#8,#:.0:>(#P3,#
0:>F%# ;(O%&# ,8# 0,8>%.%>:0%# cunknownd# @# P3,# 8,#
,;(O3(&C#(O#=:.(O#cposteriorid"##
<O# .]B,&%# 0,# .%0%8# ;:8:'(0%8# c*3&G(0d# 8,#
:.>&,B,.'(# >3(.0%# 8,# '&('(.# O%8# 0%8# .3,;%8#
83MN&%MO,B(8# P3,# 8,# %M':,.,.# (# N(&':&# 0,O# P3,# 8,#
,8'S#,8'30:(.0%#,.#>(0(#B%B,.'%)#,8'%#,8)#>3(.0%#
&,>3&8:;(B,.',# 8,# &,83,O;,.# O%8# N&%MO,B(8# P3,#
Z8:[#:.>O3@,.#(O#8:23:,.',#%M7,'%#cO1.,(#Ifd##@#Z.%[#
O%#:.>O3@,.#cO1.,(#GRd"#<8',#:.>&,B,.'%#F,B%8#0,#
:.0:>C&8,O%# (# *6++# :.8,&'(.0%# O(# 0:&,>':;(#
>%&&,8N%.0:,.',#,.#O(#O1.,(#GK"#
?:.(OB,.',)# 8,# F(# 0,# (Y(0:&# O(# 0:&,>':;(#
report#0,8N3S8#0,#O(#,8N,>:=:>(>:-.#0,#'%0%8#O%8#
,XN,&:B,.'%8"#<8'(#0:&,>':;(#O,#0:>,#(O#>%BN:O(0%&#
0,# *6++# P3,# 2,.,&,# 3.# =:>F,&%# >%.# '%0%8# O%8#
&,83O'(0%8# %M',.:0%8# 03&(.',# O(# ,7,>3>:-."# <.#
.3,8'&%# >(8%)# O(# >%O%>(B%8# 738'%# (.',8# 0,# O(#
8,.',.>:(#return#0,#O(#=3.>:-.# &%(*+ cO1.,(#Vhd"##
E,#F(#3':O:4(0%#,O#>(O:=:>(0%&#all#P3,#23(&0(#O%8#
&,83O'(0%8#0,#'%0%8#O%8#,XN,&:B,.'%8#0,=:.:0%8#,.#
,O# N&%2&(B("# 6O',&.(':;(B,.',)# 8,# N3,0,#
,8N,>:=:>(&#3.(#O:8'(#>%.#O%8#:0,.':=:>(0%&,8#0,#O%8#
,XN,&:B,.'%8# 0,# O%8# >3(O,8# 8,# P3:,&,.# (OB(>,.(&#
O%8#&,83O'(0%8"#
9.(# ;,4# (.%'(0%# ,O# >-0:2%# =3,.',# >%.# O(8#
0:&,>':;(8# 0,# *6++# 8,# N3,0,# >%BN:O(&# >%.#
>3(OP3:,&#>%BN:O(0%&#0,#*#@#8,#8,23:&C#,7,>3'(.0%#
,X(>'(B,.',# >%B%# 8:# .%# 8,# F3M:,&(# B%0:=:>(0%"#
<8'%# ,8# 0,M:0%# (# P3,# ,O# >%BN:O(0%&# :2.%&(# '%0(8#
O(8#0:&,>':;(8# *6++#'&('C.0%O(8#8:BNO,B,.',#>%B%#
>%B,.'(&:%8"#
E3N%.2(B%8# P3,# ,O# 6O2%&:'B%# K# ,8'C#
(OB(>,.(0%# ,.# ,O# =:>F,&%# =6"@'"# Q&%>,0,B%8# (#
N&%>,8(&O%# >%.# ,O# >%BN:O(0%&# 0,# *6++# 3':O:4(.0%#
,O#>%B(.0%T##
#
> call kpr.c
#
*%B%# &,83O'(0%# 8,# N&%03>,.# 0%8# =:>F,&%8# 0,#
8(O:0(T# =6"@'--@'#@# =6"@'--@J"#Q(&(#8(M,&#P3S#>-0:2%#
(Y(0,# *6++# (O# N&%2&(B(# %&:2:.(O# 8-O%# F(@# P3,#
,>F(&O,# 3.# ;:8'(4%# (# ,8'%8# =:>F,&%8"# 6F%&(# 8,#
N&%>,0,# (# >%BN:O(&# ,8'%8# =:>F,&%8# >%.# 3.#
>%BN:O(0%&# 0,# *)# :.0:>C.0%O,# 0-.0,# ,8'C.# O%8#
=:>F,&%8# 0,# *6++# P3,# ,8# .,>,8(&:%# :.>O3:&#
c/usr/local/CALL/includedT##
#
>cc -o kpr kpr.cll.c
#
6O# ,7,>3'(&# ,O# N&%2&(B(# &,83O'(.',# ckpr)# 8,#
%M':,.,# 3.# =:>F,&%# >%.# O%8# &,83O'(0%8# 0,O#
,XN,&:B,.'%# 0,=:.:0%T# =6"@'@4%1"# +(# ?:23&(# K#
B3,8'&(#,O#>%.',.:0%#0,#,8',#=:>F,&%"#<O#N&%2&(B(#
8,# ,7,>3'-# 8%M&,# 3.(# B%>F:O(# 0,# >(N(>:0(0# A# _#
K"I^V"IRI#@#.]B,&%#0,#%M7,'%8#b#_#^RRR"#?:7,B%8#
.3,8'&(# (',.>:-.# ,.# O(8# 0%8# ]O':B(8# O1.,(8# 0,O#
=:>F,&%"# <.# ,OO(8# (N(&,>,.# O%8# &,83O'(0%8# 0,#
.3,8'&%# ,XN,&:B,.'%"# Q3,8'%# P3,# 8,# '&('(# 0,# 3.(#
,7,>3>:-.#8,>3,.>:(O)#,O#.]B,&%#0,#CPUS#38(0(8#,8#
K"# Q%&# 0,=,>'%)# ,O# .%BM&,# 0,# O(# CPU# ,8# R"# <O#
.]B,&%# 0,# .%0%8# ;:8:'(0%8# c*3&G(0d# F(# 8:0%# 0,#
IhK"KGV# @# ,O# ':,BN%# ,.# ,O# P3,# 8,# F(# ,7,>3'(0%# O(#
OO(B(0(# (# O(# =3.>:-.# =*%6HI+ F(# 8:0%# 0,# R)Kh#
8,23.0%8"#<.#,O#B(.3(O#0,#383(&:%#0,#*6++##U^W#8,#
N3,0,# ,.>%.'&(&# 3.(# 0,8>&:N>:-.# 0,'(OO(0(# 0,O#
&,8'%#0,#O(#:.=%&B(>:-.#P3,#(N(&,>,#,.#,O#=:>F,&%"##
#
#
EXPERIMENT: "kps"
BEGIN_LINE: 115
END_LINE: 119
FORMULA: p 0 p 1 v 0 * +
INFORMULA: kps[0]+kps[1]*numvis
MAXTESTS: 131072
DIMENSION: 2
PARAMETERS:
NUMIDENTS: 1
IDENTS: numvis
OBSERVABLES: CLOCK
COMPONENTS: 1 numvis
POSTFIX_COMPONENT_0: 1
POSTFIX_COMPONENT_1: v 0
NUMTESTS: 1
SAMPLE:
CPU NCPUS numvis
CLOCK
0
1 261134.0 0.16491100
?:23&(#K"! *%.',.:0%#0,O#=:>F,&%#g.&">"0('#
<K+L".9*)*7+)&+G97&M*9N*+O9(P&.7(0*.(*+)&+%*+<9Q".#50(1*+
#
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
B>S+
busy[0] = 1; for i = 1, nProcs { busy[i] = 0;}
idle = nProcs - 1;
//Send initial subproblem to first idle slave
auxSp = sp.initSubProblem();
outputPackect.send(firstIdle,
auxSp,
// initial subproblem
bestSol, // bestSolution
sol);
// current solution
idle--;
IDLE2WORKING(busy,firstIdle); // mark this slave like working
while (idle < (groupSize-1)) { // while there are working slaves
recv(source, flag);
while(flag) {
if (SOLVE_TAG) {
// receive the final solution
inputPacket.recv(source,
bestSol, // best solution
sol);
// current solution
}
if (BnB_TAG) {
// receive a slave request
inputPacket.recv(source,
high,
// upper bound
nSlaves); // num. of reuiered slaves
if ( high > bestSol){
// problem to branch
total= ((nSlaves <= idle)?nSlaves:idle);
for i = 1, total { idle--; IDLE2WORKING(busy,i); }
outputPacket.send(source,
total, // num. of assigned slaves
bestSol,
// best Solution
1,..., total // slaves identifiers
);
}
else { // the problem must be bounded
outputPackted.send(source, DONE);
}
}
if (IDLE_TAG) {
// signal of an idle slave
inputPacket.recv(source, IDLE);
idle++;
WORKING2IDLE(busy,source); // mark this slave like idle
}
recv(source, flag);
} // while (flag)
} // while (idle < (groupSize-1))
// Send the ending message
for i = 1, groupSize { outputPacket.send(i, END); }
6O2%&:'B%#K"! !BNO,B,.'(>:-.#0,O#A(,8'&%#
#
F;>;!6&7"%81(=9+4*.*%&%*+
+(#;,&8:-.#N(&(O,O(#0,O#(O2%&:'B%#0,#/(B:=:>(>:-.#
@# 6>%'(>:-.# N(&(# &,8%O;,&# ,O# N&%MO,B(# 0,# O(#
B%>F:O(# 8,# F(# :BNO,B,.'(0%# B,0:(.',# Q(8%# 0,#
A,.8(7,8# UhW# 8:23:,.0%# 3.# ,8P3,B(#
C%,01"#KL0'-%G#"##
<O# C%,01"## c;S(8,# ,O# 6O2%&:'B%# Id# ,8# ,O#
&,8N%.8(MO,# 0,# O(# >%%&0:.(>:-.# ,.'&,# '(&,(8)# N(&(#
,OO%)#>3,.'(#>%.#O(#,8'&3>'3&(#0,#0('%8# 230M#0%.0,#
&,2:8'&(#,O#,8'(0%#0,#%>3N(>:-.#0,#>(0(#3.%#0,#O%8#
,8>O(;%8#cO1.,(#Kd"#6O#>%B:,.4%#0,#O(#>%BN3'(>:-.#
'%0%8#O%8#,8>O(;%8#8,#B(&>(.#>%B%#%>:%8%8"#
<O#83MN&%MO,B(#:.:>:(O#c%3AE6d)#,O#B,7%&#;(O%&#
0,#O(#=3.>:-.#%M7,':;%#c2,01E#-d#@#,O#B,7%&#;,>'%&#
8%O3>:-.# F(8'(# ,O# B%B,.'%# 8,# ,.;1(# (O# N&:B,&#
,8>O(;%# %>:%8%8# cO1.,(8# GeKRd"# A:,.'&(8# ,X:8'(.#
,8>O(;%8# O:M&,8# ,O# C%,01"## &,>:M,# :.=%&B(>:-.# 0,#
,OO%8# @# 0,>:0,# O(# 8:23:,.',# (>>:-.# (# ,7,>3'(&#
0,N,.0:,.0%# 0,# 8:# ,O#N&%MO,B(# ,8'C# %# .%# &,83,O'%#
cO1.,(# KVd)# 8:#F(@# 3.(# 8%O:>:'30# 0,# ,8>O(;%8# cO1.,(#
Kfd# %# 8:# O%8# ,8>O(;%8# .%# ':,.,.# .(0(# P3,# F(>,&#
cO1.,(#Ghd"#E:#,O#N&%MO,B(#,8'C#&,83,O'%#8,#&,>:M,.#
B>T+
#
D(70&#*7+)(70.(E8()"7+A+$*.*%&%"7+
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
while (1) {
recv(source, flag);
while (flag) {
if (END_TAG){
// receive the finishing message
inputPacket.recv(MASTER, END); return;
}
if (PBM_TAG){
// the problem to be branched
inputPacket.recv(source,
// source = slave or master:
auxSp,
//
the initial subproblem
bestSol,
//
the best solution value
sol);
//
the current solution
auxSol = sol;
bqueue.insert(auxSp);
// insert in the local queue
while(!bqueue.empty()) {
auxSp = bqueue.remove(); // pop from the local queue
#pragma cll code numvis++;
high = auxSp.upper_bound(pbm,auxSol);
// upper bound
if ( high > bestSol ) {
low = auxSp.lower_bound(pbm,auxSol);
// lower bound
if ( low > bestSol ) {
bestSol = low;
sol = auxSol;
outputPacket.send(MASTER,
// send to the Master:
SOLVE_TAG,
// problem solved
bestSol,
// best solution value
sol);
// solution vector
}
if ( high != low ) {
rSlaves = bqueue.getNumberOfNodes();
op.send(MASTER,
BnB_TAG,
high,
// upper bound
rSlaves);
// num. of slaves req.
inputPacket.recv(MASTER,
nfSlaves,
// num. of slaves assig.
bestSol,
// updated best solution
rank {1,..., nfSlaves});
if ( nfSlaves >= 0) {
auxSp.branch(pbm,bqueue);
// branch
for i=0, nfSlaves{
// send problems to slaves
auxSp = bqueue.remove();
#pragma cll code numvis++;
outputPacket.send(rank, // send to the slave:
PBM_TAG, //
tag
auxSp,
//
problem
bestSol, //
best solution value
sol);
//
the solution vector
}
} // if nfSlaves == DONE the problem is bounded (cut)
} } }
outputPacket.send(MASTER, IDLE_TAG); /idle slave
}
recv(source, flag);
} // while (flag)
} // while(1)
6O2%&:'B%#G"! !BNO,B,.'(>:-.#0,O#<8>O(;%#(.%'(0(#
,O# B,7%&# ;(O%&# 0,# O(# =3.>:-.# %M7,':;%# @# ,O# ;,>'%&##
8%O3>:-.#@#8,#(OB(>,.(.#cO1.,(8#K^eKHd"#*3(.0%#,O#
C%,01"#+ &,>:M,# 3.(# 8%O:>:'30# 0,# Z*E-%G,0[#
,8>O(;%8#O:M&,8)#;:,.,#(>%BN(Y(0(#0,O#;(O%&#0,#O(#
>%'(#83N,&:%&#cJ($Jd"#E:#,O#;(O%&#0,#O(#>%'(#83N,&:%&#
,8#B(@%&#P3,#,O#;(O%&#(>'3(O#0,#O(#B,7%&#8%O3>:-.#
c2,01E#-d#O(#&,8N3,8'(#(O#,8>O(;%#:.>O3@,#,O#.]B,&%#
0,#,8>O(;%8#O:M&,8#P3,#N3,0,.#(@30(&#(#&,8%O;,&#,O#
N&%MO,B(# c1#1%-d# e# O1.,(8# IheGR"# <.# %'&%# >(8%)# O(#
&,8N3,8'(# :.0:>(# P3,# .%# ,8# .,>,8(&:%# '&(M(7(&# ,.#
,8,# 83MC&M%O# 0,# M]8P3,0(# cO1.,(# GGd"# *3(.0%# ,O#
.]B,&%#0,#,8>O(;%8#O:M&,8#,8#:23(O#(O#;(O%&#:.:>:(O)#
,O# N&%>,8%# 0,# M]8P3,0(# =:.(O:4(# @# ,O# A(,8'&%#
<K+L".9*)*7+)&+G97&M*9N*+O9(P&.7(0*.(*+)&+%*+<9Q".#50(1*+
B>U+
#
.%':=:>(#(#'%0%8#O%8#,8>O(;%8#P3,#0,7,.#0,#'&(M(7(&#
cO1.,(#V^d"#
*(0(# ,0'-%G## c6O2%&:'B%# Gd# '&(M(7(# (>%'(.0%#
O%8#N&%MO,B(8#P3,#&,>:M,#cO1.,(8#HeKId"#E,#2,.,&(.#
.3,;%8# 83MN&%MO,B(8# B,0:(.',# OO(B(0(8# (# O(#
=3.>:-.# 0,# &(B:=:>(>:-.# 2"%*'JHI# cO1.,(# Gfd"# <O#
,0'-%G## N:0,# :.=%&B(>:-.# 8%M&,# ,8>O(;%8# O:M&,8# (O##
C%,01"#+ cO1.,(8# GReGGd"# E:# .%# F(@# %'&%8# ,8>O(;%8#
O:M&,8# P3,# O,# (@30,.# ,.# 83# '(&,()# ,O# ,0'-%G##
>%.':.](# '&(M(7(.0%# O%>(OB,.',"# <.# %'&%# >(8%)#
,O:B:.(#83MN&%MO,B(8#0,#83#>%O(#O%>(O#@#O%8#,.;1(#
0:&,>'(B,.',# (# O%8# %'&%8# ,8>O(;%8# P3,# O,# F(@(.#
(8:2.(0%#cO1.,(8#GfeVJd"#
6O# :23(O# P3,# ,.# ,O# >(8%# 8,>3,.>:(O)# P3,&,B%8#
,8'30:(&# ,O# .]B,&%# 0,# .%0%8# ;:8:'(0%8# c*3&G(0d"#
6F%&(# ,8',# ;(O%&# ,8'C# 0:8'&:M3:0%# ,.'&,# O%8#
,0'-%G#0)#N%&P3,#,O# C%,01"#+ .%#&,(O:4(#O(M%&,8#0,#
(>%'(>:-."# Q%&# O%# '(.'%)# (.%'(&,B%8# ,O# >-0:2%#
N(&(O,O%# ,X(>'(B,.',# :23(O# P3,# ,O# 8,>3,.>:(O)#
>(BM:(.0%# 8-O%# ,O# O32(&# 0%.0,# 8,# :.>&,B,.'(# ,O#
.]B,&%# 0,# .%0%8# ;:8:'(0%8"# +(8# 0:&,>':;(8# *6++#
P3,#O%#F(>,.#8,#F(.#(Y(0:0%#,.#O%8#N3.'%8#,.#O%8#
P3,#8,#,X'&(,.#N&%MO,B(8#0,#O(#>%O(#O%>(O#0,#>(0(#
,8>O(;%# @(# 8,(# N(&(# ,8'30:(&O%# cO1.,(# Khd# %# N(&(#
,.;:C&8,O%# (# %'&%# ,8>O(;%# N(&(# P3,# O%# &,83,O;(#
cO1.,(#VId"#
F;F;!G708)("+)&+%"7+.&78%0*)"7+
+(# F,&&(B:,.'(# ++6*# (O# 8,&# 3.(# ,X',.8:-.# 0,# /)#
N&%N%&>:%.(#O(#N%8:M:O:0(0#0,#F(>,&#3.#(.CO:8:8#0,#
O(8# B3,8'&(8# P3,# 8,# %M':,.,.# (O# ,7,>3'(&# O%8#
,XN,&:B,.'%8# 2,.,&(0%8# >%.# *6++"# *%.# O(8#
B:8B(8#B3,8'&(8#8,#N3,0,.#&,(O:4(&#0:8':.'%8#':N%8#
0,# &,N&,8,.'(>:%.,8# N(&(# ,8'30:(&# >3(.'%# 8,#
(738'(.#O(#=-&B3O(#>%.#O(#P3,#F(M1(B%8#(.%'(0%#,O#
N&%2&(B(#@#O%8#&,83O'(0%8#%M',.:0%8"#
+(8#,7,>3>:%.,8#8,>3,.>:(O,8#0,O#N&%MO,B(#0,#
O(# B%>F:O(# 8,# ,7,>3'(&%.# 8%M&,# 3.# N&%>,8(0%&#
6A$e$3&%.#(#HRR#Al4#@#I^h#AM#0,#B,B%&:("#<O#
,XN,&:B,.'%# >%.8:8':-# ,.# 2,.,&(&# (O,('%&:(B,.',#
0:,4#N&%MO,B(8#0,#O(#B%>F:O(#>%.#>(N(>:0(0#,.#,O#
&(.2%# U^RR)# ^RRRW"# +(# ?:23&(# I)# 2,.,&(0(# >%.#
++6*)#B3,8'&(#O%8#&,83O'(0%8#%M',.:0%8"#*(0(#3.%#
0,# O%8# 0:,4# N3.'%8# &,0%.0%8# (8%>:(0%# (# >(0(#
'(B(Y%#c^RRe^RRRd#&,N&,8,.'(#,O#.]B,&%#0,#.%0%8#
P3,#8,#;:8:'-#N(&(#&,8%O;,&#,8,#N&%MO,B("#+(8#ZX[#
3.:0(8# >%.# 3.(# O1.,(# N3.',(0(# &,N&,8,.'(.# O(#
B,0:(# 0,# .%0%8# ;:8:'(0%8"# +(# O1.,(# >%.':.3(#
&,N&,8,.'(# (# 3.# N%O:.%B:%# 0,# 8,23.0%# 2&(0%)# O%#
P3,# .%8# :.0:>(# P3,# ,O# .]B,&%# B,0:%# 0,# .%0%8#
;:8:'(0%8# 8,# (N&%X:B(# (# 3.(# N(&CM%O("# $,# O(#
2&C=:>(#'(BM:S.#8,#>%.>O3@,#P3,#(#B(@%&#.]B,&%#
0,# %M7,'%8# B(@%&# 0:8N,&8:-.# ,.# ,O# .]B,&%# 0,#
.%0%8# ;:8:'(0%8"# <8',# >%BN%&'(B:,.'%# >&,,B%8#
P3,# ,8'C# O:2(0%# (O# 2,.,&(0%&# 0,# N&%MO,B(8#
(O,('%&:%#P3,#8,#,8'C#3':O:4(.0%"#
#
?:23&(#I"! /,83O'(0%8#0,O#E,>3,.>:(O#
9.# N(&CB,'&%# B3@# :.',&,8(.',# 0,# ,8'30:(&# ,.#
O(8# :BNO,B,.'(>:%.,8# N(&(O,O(8# 0,# O%8# (O2%&:'B%8#
0,# &(B:=:>(>:-.# @# (>%'(>:-.# ,8# ,O# Z,P3:O:M&(0%# 0,#
O(# >(&2(# 0,# '&(M(7%[# ,.'&,# O%8# 0:8':.'%8#
N&%>,8(0%&,8# P3,# :.',&;:,.,.# ,.# O(# ,7,>3>:-.# 0,O#
(O2%&:'B%"#
#
?:23&(#G"! /,83O'(0%8#,7,>3>:-.#N(&(O,O(#
BFI+
D(70&#*7+)(70.(E8()"7+A+$*.*%&%"7+
#
+(# ?:23&(# G# B3,8'&(# O(# 0:8'&:M3>:-.# B,0:(# 0,#
.%0%8#;:8:'(0%8#,.'&,#%>F%#N&%>,8(0%&,8#0,#>:.>%#
,7,>3>:%.,8# 0,# 3.# N&%MO,B(# 0,# O(# B%>F:O(#
2,.,&(0%# (O,'%&:(B,.',# 0,# '(B(Y%# VRRR"# E,# '&('(#
0,#3.#>%.73.'%#0,#BCP3:.(8#F,',&%2S.,%"#+(8#0%8#
N&:B,&(8# 8%.# 6A$e$3&%.#(#HRR#Al4# @#,O#&,8'%#(#
^RR#Al4)##'%0(8#>%.#I^h#AM#0,#B,B%&:("#b-',8,#
P3,# ,O# N&%>,8(0%&# >,&%# .%# ;:8:'(# .:.2].# .%0%#
N3,8'%# P3,# 8,# '&('(# 0,O# C%,01"#"# *&,,B%8# P3,# ,O#
N&:B,&%#0,#O%8#,8>O(;%8#,XNO%&(#O(#B(@%&#N(&',#0,O#
,8N(>:%# 0,# M]8P3,0()# N%&P3,# 8,# '&('(# 0,# 3.#
N&%>,8(0%&# BC8# &CN:0%# @# 0,M:0%# (O# '(B(Y%# 0,O#
N&%MO,B()# .%# P3,0(# B3>F%# '&(M(7%# N(&(# O%8#
]O':B%8"# L(BM:S.# F,B%8# .%'(0%# 3.(# 2&(.#
0:=,&,.>:(# ,.'&,# ,O# .]B,&%# 0,# .%0%8# ;:8:'(0%8# 0,#
3.(# ,7,>3>:-.# (# %'&("# +(# ?:23&(# # V# B3,8'&(# O%8#
&,83O'(0%8# 0,# O%8# >:.>%# ,XN,&:B,.'%8# P3,# 0(.#
O32(&# (# O(# B,0:(# 0,# O(# ?:23&(# G"# *&,,B%8# P3,# ,O#
:.>&,B,.'%# 0,# .%0%8# ,.# O(# 8,23.0(# ,7,>3>:-.# 8,#
0,M,# (# P3,# ,X:8'1(# (O2].# %'&%# N&%>,8%# ,.# O(#
BCP3:.(#3.%#P3,#>%.83B1(#B3>F%8#&,>3&8%8"#<8'%#
:BNO:>(&1(# P3,# O(# &,>,N>:-.# 0,# O(8# >%'(8# P3,#
N,&B:':&1(.#N%0(&#8,#&,(O:4(#BC8#'(&0,)#N%&#O%#P3,#
8,#,XNO%&(#3.#,8N(>:%#0,#M]8P3,0(#B(@%&"###
#
#
?:23&(#V"! *:.>%#<7,>3>:%.,8#Q(&(O,O(8#N(&(#b_VRRR#
C;! !"91%87("9&7+
E,#F(#N&,8,.'(0%#(#'&(;S8#0,#3.#,7,BNO%#,O#B%0%#
0,# 38%# 0,# O(8# F,&&(B:,.'(8# *6++# @# ++6*# N(&(# ,O#
(.CO:8:8#0,#>%BNO,7:0(0#0,#(O2%&:'B%8"#
<O# ,7,BNO%# 3':O:4(0%# =%&B(# N(&',# 0,# O(8#
N&C>':>(8# 0,# O(M%&('%&:%# 0,# O(8# (8:2.('3&(8#
!"#$"%&%'()*+,*+!%"%-,-#+.+M+..#P3,#8,#:BN(&',.#
,.# O(# !.2,.:,&1(# E3N,&:%&# ,.# !.=%&BC':>(# ,.# O(#
9.:;,&8:0(0# 0,# +(# +(23.("# E:.# ,BM(&2%)#
>%.8:0,&(B%8# P3,# ,8'(8# F,&&(B:,.'(8# 8,&1(.# 0,#
2&(.# 3':O:0(0# ,.# O(# 0%>,.>:(# 0,# (8:2.('3&(8# P3,#
:.>O3@(.# ,.# 838# >%.',.:0%8# O(# 0,8>&:N>:-.# 0,#
'S>.:>(8#
(O2%&1'B:>(8"#
+(8#
F,&&(B:,.'(8#
N&%N%&>:%.(.# O(# N%8:M:O:0(0# .%# 8-O%# 0,# ,8'30:(&#
:BNO,B,.'(>:%.,8# 8,>3,.>:(O,8# 0,# (O2%&:'B%8)#
8:.%#'(BM:S.#N(&(O,O(8"#
60,BC8)#,O#(O2%&:'B%#N(&(O,O%#N&%N3,8'%#N(&(#
&,8%O;,&# ,O# N&%MO,B(# 0,# O(# A%>F:O(# RDK)# 8,# N3,0,#
2,.,&(O:4(&#N(&(#&,8%O;,&#B,0:(.',#/(B:=:>(>:-.#@#
6>%'(>:-.#%'&%#':N%#0,#N&%MO,B(8"#
,-.*)&1(#(&90"7+
<8',# '&(M(7%# F(# 8:0%# =:.(.>:(0%# N(&>:(OB,.',# N%&#
O%8# N&%@,>'%8# 0,O# B:.:8',&:%# 0,# *:,.>:(# @#
L,>.%O%21(T# L!*IRRIeRVVfHe*R^eR^# cL/6*</d#
@#L!*IRRIeRVVRRe*RGeRG#cQ<+!*6bd"###
6&Q&.&91(*7+
UKW!#$%&'(# !")# +,-.# *")# /%0&123,4# *")# /%7(8# 6"#
!%"%--,-+ E=,-,1#*0+ 5#"+ /(G(4,D%*4D8#*N3,"+
%*4+ O"%*'JD%*4DO#3*4+ 1,'J*(N3,0"# !.#
Q&%>,,0:.2# %=# KK'F# <3&%B:>&%# *%.=,&,.>,# %.#
Q(&(OO,O)# $:8'&:M3',0# (.0# b,'\%&g# M(8,0#
Q&%>,88:.2)#IRRG"#
UIW!!F(g(# /")# 5,.'O,B(.# /"# P?+ Q+ -%*$3%$,+ 5#"+
/%1%+ Q*%-M0(0+ %*4+ R"%6J('0@+ # m%3&.(O# %=#
*%BN3'(':%.(O#(.0#5&(NF:>(O#E'(':8':>8)#^#cGd)#
NN"#IffeGKV)#Kffh"#
UGW!A(&',OO%# E")# L%'F# Q"# S*%60%'=+ !"#2-,&0T+
Q-$#"(1J&0+ %*4+ 8#&631,"+ .&6-,&,*1%1(#*0"#
m%.F#n:O,@#o#E%.8#+'0)#KffR"#
UVW!QO(.,8#0,#<8'30:%#0,O#*E!"##
F''NTDD\\\">8:"3OO",8#
U^W!/%0&123,4)# 5"# 8QUUT+ %+ '#&6-,A(1M+ Q*%-M0(0+
V##-"# Q&%@,>'%# ?:.# 0,# *(&&,&()# *,.'&%#
E3N,&:%&# 0,# !.=%&BC':>()# 9.:;,&8:0(0# 0,# +(#
+(23.()#m3.:%#IRRI"##
F''NTDD.,&,:0("0,:%>"3OO",8Dp>(OO"#
UhW!E.:&# A")# q''%# E")# l388# E")# n(Og,&# $"# (.0#
$%.2(&&(#m"# C!.D1J,+8#&6-,1,+P,5,",*',"#I.0#
<0:':%.)#A!L#Q&,88)#KffH"#
#
Descargar