рдпрд╣ рд╡рд┐рд╖рдп рдкреНрд░рд╛рдЗрдорд╛-рдХреНрд░реИрд╕реНрдХрд▓ рд╕рдорд╕реНрдпрд╛ (
"рд▓рд╛рд▓рдЪреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо" ) рдФрд░ рдкреНрд░реЛрд▓реЙрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ред
рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдУ!
рдХрд╛рд░реНрдп: рдЗрд╕рдореЗрдВ рдПрдХ рд╕рдорддрд▓ рджреЗрд╢ рдФрд░ n рд╢рд╣рд░ рджрд┐рдП рдЧрдП рд╣реИрдВред рд╕рднреА рд╢рд╣рд░реЛрдВ рдХреЛ рдЯреЗрд▓реАрдлреЛрди рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдЯреЗрд▓реАрдлреЛрди рд▓рд╛рдЗрдиреЛрдВ рдХреА рдХреБрд▓ рд▓рдВрдмрд╛рдИ рдиреНрдпреВрдирддрдо рд╣реЛред
рдХрд╛рд░реНрдп рдХрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгред рдХрд╛рд░реНрдп рдЯреЗрд▓реАрдлреЛрди рд╕рдВрдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЕрд░реНрдерд╛рдд рддрд╛рддреНрдкрд░реНрдп рд╕рдВрдЪрд╛рд░ рдХреА рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛: рдпрджрд┐ i-th рд╢рд╣рд░ рдХреЛ j-th рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ k-th рдХреЗ рд╕рд╛рде j-th рд╢рд╣рд░ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рднреА рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЯреЗрд▓реАрдлреЛрди рд▓рд╛рдЗрдиреЗрдВ рдХреЗрд╡рд▓ рдЯреЗрд▓реАрдлреЛрди рдПрдХреНрд╕рдЪреЗрдВрдЬ рдореЗрдВ рд╣реА рдЪрд▓ рд╕рдХрддреА рд╣реИрдВ, рди рдХрд┐ рд╕рд╛рдл-рд╕реБрдерд░реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВред рдЕрдВрдд рдореЗрдВ, рдиреНрдпреВрдирддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ (рдПрдХ рд╕рд╛рде рд╕рдВрдХреНрд░рд╛рдордХрддрд╛ рдХреЗ рд╕рд╛рде) рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдХреЛрдИ рдЪрдХреНрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЧреНрд░рд╛рдл рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рдВрджрд░реНрдн
рдореЗрдВ, рдкреНрд░рд╛рдЗрдорд╛-рдХреНрд░реИрд╕реНрдХрд▓ рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
рдПрди рдХреЛрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ
рдЧреНрд░рд╛рдл рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рдкрд╕рд▓рд┐рдпреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рджреА рдЧрдИ рд╣реИред рдиреНрдпреВрдирддрдо рд▓рдВрдмрд╛рдИ
рдХрд╛ рдПрдХ
рдлреИрд▓реЗ рд╣реБрдП рд╡реГрдХреНрд╖ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, n рдХреЛрдиреЗ рд╡рд╛рд▓реЗ рдкреЗрдбрд╝ рдореЗрдВ n-1 рдХрд┐рдирд╛рд░реЗ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд┐рдирд╛рд░реЗ рдХреЛ рд▓рд╛рд▓рдЪ рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдЪрдХреНрд░ рди рд╣реЛ)ред
рдкреНрд░рд╛рдЗрдорд╛-рдХреНрд░реИрд╕реНрдХрд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг: рд▓реВрдк рдПрди -1 рдмрд╛рд░ рдореЗрдВ, рдРрд╕рд╛ рдХрд░реЗрдВ: "рд╕рдмрд╕реЗ рдХрдо рд░рд┐рдм рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЬреЛ рдЕрднреА рддрдХ рдЪрдпрдирд┐рдд рдирд╣реАрдВ рд╣реИ, рдмрд╢рд░реНрддреЗ рдХрд┐ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рдЪреБрдиреЗ рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд▓реВрдк рди рдмрдирд╛рдПрдВ"ред
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЪреБрдиреЗ рдЧрдП рдХрд┐рдирд╛рд░реЗ рд╡рд╛рдВрдЫрд┐рдд рдкреЗрдбрд╝ рдмрдирд╛рддреЗ рд╣реИрдВред
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЧреНрд░рд╛рдл рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХрд┐рдирд╛рд░реЛрдВ рдФрд░ рдХреЛрдиреЗ рдХреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдлреИрд▓реЗ рд╣реБрдП рдкреЗрдбрд╝ рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
тАв рдЙрдирдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдмрдврд╝рддреЗ рдХреНрд░рдо рдореЗрдВ рдХрд┐рдирд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ;
тАв "рд▓рд╛рд▓рдЪреА" рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдФрд░ рдХрд┐рдирд╛рд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ;
тАв рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХрд┐рдирд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рдПрдХ рдлреИрд▓реЗ рд╣реБрдП рдкреЗрдбрд╝ рд╣реИред
рд▓рд╛рд▓рдЪреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдПрдХ рдХрд┐рдирд╛рд░реЗ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд┐рд╕реЗ рдЕрднреА рддрдХ рдиреНрдпреВрдирддрдо рд▓рдВрдмрд╛рдИ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдХрд┐рдирд╛рд░реЗ рдХреЛ рдЕрдиреНрдп рдЪрдпрдирд┐рдд рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрдХреНрд░ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред
рдЕрдм,
SWI- рдкреНрд░реЛрд▓реЙрдЧ рдкрд░ рдкрд░рд┐рдгрд╛рдореА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
:%
launch:-
write_ln(':'), read(X),
write_ln(' :'), read(Y),
city(X,Y,Z),
write_ln(' :'),
write(Z).
launch:-
write_ln(' ').
%
%
%Z1 - ,
%Y-
%Z2 -
minimum([],Z,Z):- !.
minimum([[X1,X2,_]|Y],Z1,Z2):-
not(search(X1,X2,Z1,[X1])),!,
minimum(Y,[[X1,X2]|Z1],Z2).
minimum([_|Y],Z1,Z2):- minimum(Y,Z1,Z2). %
% 1 2
% - 7.
%, Y - , Z - ( ).
search(X1,X2,Y,_):- member([X1,X2],Y).
search(X1,X2,Y,_):- member([X2,X1],Y).
search(X1,X2,Y,Z):- member([X1,X3],Y),
not(member(X3,Z)), search(X3,X2,Y,[X3|Z]).
search(X1,X2,Y,Z):- member([X3,X1],Y),
not(member(X3,Z)), search(X3,X2,Y,[X3|Z]).
% ( )
%
% L1 - , X - , L2 -
ins(X,[],[X]).
ins([X1,X2,R1],[[Y1,Y2,R2]|L],[[X1,X2,R1]|[[Y1,Y2,R2]|L]]):- R1<R2,!.
ins(X,[Y|L1],[Y|L2]):- ins(X,L1,L2).
%
%
%L - ,Y1 - , Y3 - .
sortrast([],Y,Y). sortrast([X|L],Y1,Y3):- ins(X,Y1,Y2), sortrast(L,Y2,Y3).
% .
%
%Z - X - , Y - ,
city([X|L],Y,Z):- sortrast(Y,[],Y1), minimum(Y1,[],Z), all(X,L,Z).
%
%
% x -, Z - L -
all(_,[],_).
all(X,[Y|L],Z):- search(X,Y,Z,[X]),!,all(X,L,Z).
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзреЗрдпрдХреЛрдВ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
тАв
рд▓реЙрдиреНрдЪ - рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рд╣рд░реЛрдВ рдХреА рд╕реВрдЪреА рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдмрд┐рдЦрд░рд╛рд╡ред
тАв
Sortrast (L1, L2, L3) - рд╕рдореНрдорд┐рд▓рд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ L1 рд╕реВрдЪреА рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ L2 рд╡рд░реНрддрдорд╛рди рд╕реВрдЪреА рд╣реИ, L3 рдкрд░рд┐рдгрд╛рдо рд╣реИред
тАв
ity (рдПрдХреНрд╕, рд╡рд╛рдИ, рдЬреЗрдб) - рдЯреЗрд▓реАрдлреЛрди рд▓рд╛рдЗрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╢рд╣рд░реЛрдВ рдХрд╛ рдХрдиреЗрдХреНрд╢рди, рдЬрд╣рд╛рдВ рдПрдХреНрд╕ - рд╢рд╣рд░реЛрдВ рдХреА рд╕реВрдЪреА, рд╡рд╛рдИ - рджреВрд░реА рдХреА рд╕реВрдЪреА, рдЬреЗрдб - рдкрд░рд┐рдгрд╛рдоред
тАв
рдЦреЛрдЬ (рдПрдХреНрд╕ 1, рдПрдХреНрд╕ 2, рд╡рд╛рдИ, рдЬреЗрдб ) - рдорд╛рд░реНрдЧ рдПрдХреНрд╕ 1 рд╕реЗ рд╡рд░реНрдЯреЗрдХреНрд╕ рдПрдХреНрд╕ 2 рддрдХ рдХреЗ рдорд╛рд░реНрдЧ рдХреА рдЦреЛрдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╡рд╛рдИ рдХрд┐рдирд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рд╣реИ, рдЬреЗрдб рдХреЛрдиреЗ рдХреА рд╕реВрдЪреА рд╣реИ (рдЬреЛ рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВ)ред
тАв
рд╕рднреА (рдПрдХреНрд╕, рд╡рд╛рдИ, рдЬреЗрдб) - рд╢рд╣рд░реЛрдВ рдХреЗ рдлреЛрди рдХрд╡рд░реЗрдЬ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдЬрд╣рд╛рдБ X рдкрд╣рд▓рд╛ рд╢рд╣рд░ рд╣реИ, L рдЕрдиреНрдп рд╢рд╣рд░реЛрдВ рдХреА рд╕реВрдЪреА рд╣реИ, Z рдЯреЗрд▓реАрдлреЛрди рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕реВрдЪреА рд╣реИред
тАв
ins (X, L1, L2) - рд╡рд┐рдзреЗрдп рддрддреНрд╡ рдХреЛ L1 (рдХрд┐рдирд╛рд░реЛрдВ рдХреА рдХреНрд░рдордмрджреНрдз рд╕реВрдЪреА) рдореЗрдВ X рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред L2 рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред
тАв
рдиреНрдпреВрдирддрдо (рд╡рд╛рдИ, рдЬреЗрдб 1, рдЬреЗрдб 2) - рдиреНрдпреВрдирддрдо (рд▓рдВрдмрд╛рдИ рдореЗрдВ) рдХрдиреЗрдХреНрд╢рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзреЗрдпред рдЬрд╣рд╛рдВ Y рдХрд┐рдирд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рд╣реИ, Z1 рдЪрдпрдирд┐рдд рдХрд┐рдирд╛рд░реЛрдВ рд╣реИ, Z2 рдкрд░рд┐рдгрд╛рдо рд╣реИред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо:

