!"#$%&'()*)+,%-"./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"# #