Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
10.12.2013
Размер:
14.96 Кб
Скачать
ѓ« ў  3. ЋЎе®¤ ¤ҐаҐў . ЏҐаҐЎ®а б ў®§ўа в ¬Ё.

3.1. ”Ґа§Ё, ­Ґ ЎмойЁҐ ¤агЈ ¤агЈ : ®Ўе®¤ ¤ҐаҐў  Ї®§ЁжЁ©

‚ ЇаҐ¤л¤г饩 Ј« ўҐ ¬л а бб¬ ваЁў «Ё ­ҐбЄ®«мЄ® § ¤ з ®¤­®Ј®
Ё в®Ј® ¦Ґ вЁЇ : "ЇҐаҐзЁб«Ёвм ўбҐ н«Ґ¬Ґ­вл ­ҐЄ®в®а®Ј® ¬­®¦Ґбвў 
A". ‘奬  аҐиҐ­Ёп Ўл«  в Є®ў : ­  ¬­®¦Ґб⢥ A ўў®¤Ё«бп Ї®а冷Є Ё
®ЇЁблў « бм Їа®жҐ¤га  ЇҐаҐе®¤  ®в Їа®Ё§ў®«м­®Ј® н«Ґ¬Ґ­в  ¬­®-
¦Ґбвў  A Є б«Ґ¤го饬㠧  ­Ё¬ (ў н⮬ Ї®ап¤ЄҐ). ’ Єго б奬㠭Ґ
ўбҐЈ¤  г¤ Ґвбп ॠ«Ё§®ў вм ­ҐЇ®б।б⢥­­®, Ё ў нв®© Ј« ўҐ ¬л
а бᬮваЁ¬ ¤агЈ®© Ї®«Ґ§­л© ЇаЁҐ¬ ЇҐаҐзЁб«Ґ­Ёп ўбҐе н«Ґ¬Ґ­в®ў ­Ґ-
Є®в®а®Ј® ¬­®¦Ґбвў . …Ј® ­ §лў ов "Ї®ЁбЄ б ў®§ўа в ¬Ё", "¬Ґв®¤
ўҐвўҐ© Ё Ја ­Ёж", "backtracking". Ќ  ­ и ў§Ј«п¤ ­ ЁЎ®«ҐҐ в®з­®Ґ
­ §ў ­ЁҐ нв®Ј® ¬Ґв®¤  - ®Ўе®¤ ¤ҐаҐў .

3.1.1. ЏҐаҐзЁб«Ёвм ўбҐ бЇ®б®Ўл а ббв ­®ўЄЁ n дҐа§Ґ© ­  и е-
¬ в­®© ¤®бЄҐ n ­  n, ЇаЁ Є®в®але ®­Ё ­Ґ Ўмов ¤агЈ ¤агЈ .

ђҐиҐ­ЁҐ. ЋзҐўЁ¤­®, ­  Є ¦¤®© Ё§ n Ј®аЁ§®­в «Ґ© ¤®«¦­® бв®-
пвм Ї® дҐа§о. Ѓг¤Ґ¬ ­ §лў вм k-Ї®§ЁжЁҐ© (¤«п k = 0, 1,...,n)
Їа®Ё§ў®«м­го а ббв ­®ўЄг k дҐа§Ґ© ­  k ­Ё¦­Ёе Ј®аЁ§®­в «пе (дҐа-
§Ё ¬®Јгв ЎЁвм ¤агЈ ¤агЈ ). Ќ аЁб㥬 "¤ҐаҐў® Ї®§ЁжЁ©": ҐЈ® Є®а­Ґ¬
Ўг¤Ґв Ґ¤Ё­б⢥­­ п 0-Ї®§ЁжЁп,   Ё§ Є ¦¤®© k-Ї®§ЁжЁЁ ўл室Ёв n
бв५®Є ўўҐае ў (k+1)-Ї®§ЁжЁЁ. ќвЁ n Ї®§ЁжЁ© ®в«Ёз овбп Ї®«®¦Ґ-
­ЁҐ¬ дҐа§п ­  (k+1)-®© Ј®аЁ§®­в «Ё. Ѓг¤Ґ¬ бзЁв вм, зв® а бЇ®«®-
¦Ґ­ЁҐ Ёе ­  аЁбг­ЄҐ ᮮ⢥вбвўгҐв Ї®«®¦Ґ­Ёо нв®Ј® дҐа§п: «ҐўҐҐ
в  Ї®§ЁжЁп, ў Є®в®а®© дҐа§м а бЇ®«®¦Ґ­ «ҐўҐҐ.

„ҐаҐў® Ї®§ЁжЁ© ¤«п
n = 2








‘।Ё Ї®§ЁжЁ© нв®Ј® ¤ҐаҐў  ­ ¬ ­ ¤® ®в®Ўа вм ⥠n-Ї®§ЁжЁЁ, ў Є®-
в®але дҐа§Ё ­Ґ Ўмов ¤агЈ ¤агЈ . Џа®Ја ¬¬  Ўг¤Ґв "®Ўе®¤Ёвм ¤ҐаҐ-
ў®" Ё ЁбЄ вм Ёе. —в®Ўл ­Ґ ¤Ґ« вм «Ёи­Ґ© а Ў®вл, § ¬ҐвЁ¬ ў®в зв®:
Ґб«Ё ў Є Є®©-в® k-Ї®§ЁжЁЁ дҐа§Ё Ўмов ¤агЈ ¤агЈ , в® бв ўЁвм
¤ «м­Ґ©иЁе дҐа§Ґ© б¬лб«  ­Ґв. Џ®н⮬г, ®Ў­ аг¦Ёў нв®, ¬л Ўг¤Ґ¬
ЇаҐЄа й вм Ї®бв஥­ЁҐ ¤ҐаҐў  ў н⮬ ­ Їа ў«Ґ­ЁЁ.

’®з­ҐҐ, ­ §®ўҐ¬ k-Ї®§ЁжЁо ¤®ЇгбвЁ¬®©, Ґб«Ё Ї®б«Ґ г¤ «Ґ­Ёп
ўҐае­ҐЈ® дҐа§п ®бв ўиЁҐбп ­Ґ Ўмов ¤агЈ ¤агЈ . Ќ и  Їа®Ја ¬¬  Ўг-
¤Ґв а бб¬ ваЁў вм в®«мЄ® ¤®ЇгбвЁ¬лҐ Ї®§ЁжЁЁ.




„ҐаҐў® ¤®ЇгбвЁ¬ле
Ї®§ЁжЁ© ¤«п n = 3









ђ §®ЎмҐ¬ § ¤ зг ­  ¤ўҐ з бвЁ: (1) ®Ўе®¤ Їа®Ё§ў®«м­®Ј® ¤ҐаҐ-
ў  Ё (2) ॠ«Ё§ жЁо ¤ҐаҐў  ¤®ЇгбвЁ¬ле Ї®§ЁжЁ©.
‘д®а¬г«Ёа㥬 § ¤ зг ®Ўе®¤  Їа®Ё§ў®«м­®Ј® ¤ҐаҐў . Ѓг¤Ґ¬ бзЁ-
в вм, зв® г ­ б Ё¬ҐҐвбп ђ®Ў®в, Є®в®ал© ў Є ¦¤л© ¬®¬Ґ­в ­ е®¤Ёвбп
ў ®¤­®© Ё§ ўҐаиЁ­ ¤ҐаҐў  (ўҐаиЁ­л Ё§®Ўа ¦Ґ­л ­  аЁбг­ЄҐ Єа㦮з-
Є ¬Ё). Ћ­ 㬥Ґв ўлЇ®«­пвм Є®¬ ­¤л:

ўўҐае_­ «Ґў® (Ё¤вЁ Ї® б ¬®© «Ґў®©
Ё§ ўл室пйЁе ўўҐае бв५®Є)

ўЇа ў® (ЇҐаҐ©вЁ ў б®бҐ¤­оо бЇа ў 
ўҐаиЁ­г)

ў­Ё§ (бЇгбвЁвмбп ў­Ё§ ­  ®¤Ё­ га®-
ўҐ­м)

ўўҐае_­ «Ґў®
ўЇа ў®
ў­Ё§

Ё Їа®ўҐаЄЁ, ᮮ⢥вбвўгойЁҐ ў®§¬®¦­®бвЁ ўлЇ®«­Ёвм Є ¦¤го Ё§ Є®-
¬ ­¤, ­ §лў Ґ¬лҐ "Ґбвм_ᢥаег", "Ґбвм_бЇа ў ", "Ґбвм_б­Ё§г"
(Ї®б«Ґ¤­пп ЁбвЁ­­  ўбо¤г, Єа®¬Ґ Є®а­п). ЋЎа вЁвҐ ў­Ё¬ ­ЁҐ, зв®
Є®¬ ­¤  "ўЇа ў®" Ї®§ў®«пҐв ЇҐаҐ©вЁ «Ёим Є "த­®¬г Ўа вг", ­® ­Ґ
Є "¤ў®оத­®¬г".


’ Є Є®¬ ­¤  "ўЇа ў®"
Ќ… ¤Ґ©бвўгҐв!



Ѓг¤Ґ¬ бзЁв вм, зв® г ђ®Ў®в  Ґбвм Є®¬ ­¤  "®Ўа Ў®в вм" Ё зв®
ҐЈ® § ¤ з  - ®Ўа Ў®в вм ўбҐ «Ёбвмп (ўҐаиЁ­л, Ё§ Є®в®але ­Ґв
бв५®Є ўўҐае, в® Ґбвм Ј¤Ґ гб«®ўЁҐ "Ґбвм_ᢥаег" «®¦­®). „«п ­ -
襩 и е¬ в­®© § ¤ зЁ Є®¬ ­¤Ґ ®Ўа Ў®в вм Ўг¤Ґв ᮮ⢥вбвў®ў вм
Їа®ўҐаЄ  Ё ЇҐз вм Ї®§ЁжЁЁ дҐа§Ґ©.

„®Є § вҐ«мбвў® Їа ўЁ«м­®бвЁ ЇаЁў®¤Ё¬®© ¤ «ҐҐ Їа®Ја ¬¬л Ёб-
Ї®«м§гҐв в ЄЁҐ ®ЇаҐ¤Ґ«Ґ­Ёп. Џгбвм дЁЄбЁа®ў ­® Ї®«®¦Ґ­ЁҐ ђ®Ў®в  ў
®¤­®© Ё§ ўҐаиЁ­ ¤ҐаҐў . ’®Ј¤  ўбҐ «Ёбвмп ¤ҐаҐў  а §ЎЁў овбп ­ 
ваЁ Є вҐЈ®аЁЁ: ­ ¤ ђ®Ў®в®¬, «ҐўҐҐ ђ®Ў®в  Ё Їа ўҐҐ ђ®Ў®в . (Џгвм
Ё§ Є®а­п ў «Ёбв ¬®¦Ґв Їа®е®¤Ёвм зҐаҐ§ ўҐаиЁ­г б ђ®Ў®в®¬, бў®а -
зЁў вм ў«Ґў®, ­Ґ ¤®е®¤п ¤® ­ҐҐ Ё бў®а зЁў вм ўЇа ў®, ­Ґ ¤®е®¤п
¤® ­ҐҐ.) —ҐаҐ§ (Ћ‹) ®Ў®§­ зЁ¬ гб«®ўЁҐ "®Ўа Ў®в ­л ўбҐ «Ёбвмп «Ґ-
ўҐҐ ђ®Ў®в ",   зҐаҐ§ (Ћ‹Ќ) - гб«®ўЁҐ "®Ўа Ў®в ­л ўбҐ «Ёбвмп «Ґ-
ўҐҐ Ё ­ ¤ ђ®Ў®в®¬".












Ќ ¬ Ї®­ ¤®ЎЁвбп в Є п Їа®жҐ¤га :

procedure ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм
| {¤ ­®: (Ћ‹), ­ ¤®: (Ћ‹Ќ)}
begin
| {Ё­ў аЁ ­в: Ћ‹}
| while Ґбвм_ᢥаег do begin
| | ўўҐае_­ «Ґў®
| end
| {Ћ‹, ђ®Ў®в ў «ЁбвҐ}
| ®Ўа Ў®в вм;
| {Ћ‹Ќ}
end;

Ћб­®ў­®©  «Ј®аЁв¬:

¤ ­®: ђ®Ў®в ў Є®а­Ґ, «Ёбвмп ­Ґ ®Ўа Ў®в ­л
­ ¤®: ђ®Ў®в ў Є®а­Ґ, «Ёбвмп ®Ўа Ў®в ­л

{Ћ‹}
ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм
{Ё­ў аЁ ­в: Ћ‹Ќ}
while Ґбвм_б­Ё§г do begin
| if Ґбвм_бЇа ў  then begin {Ћ‹Ќ, Ґбвм бЇа ў }
| | ўЇа ў®;
| | {Ћ‹}
| | ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм;
| end else begin
| | {Ћ‹Ќ, ­Ґ Ґбвм_бЇа ў , Ґбвм_б­Ё§г}
| | ў­Ё§;
| end;
end;
{Ћ‹Ќ, ђ®Ў®в ў Є®а­Ґ => ўбҐ «Ёбвмп ®Ўа Ў®в ­л}

Ћбв «®бм ў®бЇ®«м§®ў вмбп б«Ґ¤гойЁ¬Ё бў®©бвў ¬Ё Є®¬ ­¤ ђ®Ў®в 
(ᢥаег § ЇЁб ­л гб«®ўЁп, ў Є®в®але ўлЇ®«­пҐвбп Є®¬ ­¤ , б­Ё§г -
г⢥তҐ­Ёп ® १г«мв вҐ ҐҐ ўлЇ®«­Ґ­Ёп):

(1) {Ћ‹, ­Ґ Ґбвм_ᢥаег} (2) {Ћ‹}
®Ўа Ў®в вм ўўҐае_­ «Ґў®
{Ћ‹Ќ} {Ћ‹}

(3) {Ґбвм_бЇа ў , Ћ‹Ќ} (4) {­Ґ Ґбвм_бЇа ў , Ћ‹Ќ}
ўЇа ў® ў­Ё§
{Ћ‹} {Ћ‹Ќ}

3.1.2. „®Є § вм, зв® ЇаЁўҐ¤Ґ­­ п Їа®Ја ¬¬  § ўҐаи Ґв а Ў®вг
(­  «оЎ®¬ Є®­Ґз­®¬ ¤ҐаҐўҐ).
ђҐиҐ­ЁҐ. Џа®жҐ¤га  ўўҐае_­ «Ґў® § ўҐаи Ґв а Ў®вг (ўлб®в 
ђ®Ў®в  ­Ґ ¬®¦Ґв 㢥«ЁзЁў вмбп ЎҐбЄ®­Ґз­®). …б«Ё Їа®Ја ¬¬  а Ў®-
в Ґв ЎҐбЄ®­Ґз­®, в®, Ї®бЄ®«мЄг «Ёбвмп ­Ґ ®Ўа Ў влў овбп Ї®ўв®а-
­®, ­ зЁ­ п б ­ҐЄ®в®а®Ј® ¬®¬Ґ­в  ­Ё ®¤Ё­ «Ёбв ­Ґ ®Ўа Ў влў Ґвбп.
Ђ нв® ў®§¬®¦­®, в®«мЄ® Ґб«Ё ђ®Ў®в ўбҐ ўаҐ¬п бЇгбЄ Ґвбп ў­Ё§.
Џа®вЁў®аҐзЁҐ. (ЋЎ ®жҐ­ЄҐ зЁб«  ¤Ґ©бвўЁ© б¬. ¤ «ҐҐ.)

3.1.3. „®Є § вм Їа ўЁ«м­®бвм б«Ґ¤го饩 Їа®Ја ¬¬л ®Ўе®¤  ¤Ґ-
ॢ :

var state: (WL, WLU);
state := WL;
while Ґбвм_б­Ё§г or (state <> WLU) do begin
| if (state = WL) and Ґбвм_ᢥаег then begin
| | ўўҐае;
| end else if (state = WL) and not Ґбвм_ᢥаег then begin
| | ®Ўа Ў®в вм; state := WLU;
| end else if (state = WLU) and Ґбвм_бЇа ў  then begin
| | ўЇа ў®; state := WL;
| end else begin {state = WLU, not Ґбвм_бЇа ў , Ґбвм_б­Ё§г}
| | ў­Ё§;
| end;
end;

ђҐиҐ­ЁҐ. €­ў аЁ ­в жЁЄ« :
state = WL => Ћ‹
state = WLU => Ћ‹Ќ
„®Є § вҐ«мбвў® § ўҐа襭Ёп а Ў®вл: ЇҐаҐе®¤ Ё§ б®бв®п­Ёп Ћ‹ ў Ћ‹Ќ
ў®§¬®¦Ґ­ в®«мЄ® ЇаЁ ®Ўа Ў®вЄҐ ўҐаиЁ­л, Ї®н⮬㠥᫨ Їа®Ја ¬¬ 
а Ў®в Ґв ЎҐбЄ®­Ґз­®, в® б ­ҐЄ®в®а®Ј® ¬®¬Ґ­в  §­ зҐ­ЁҐ state ­Ґ
¬Ґ­пҐвбп, зв® ­Ґў®§¬®¦­®.

3.1.4. ђҐиЁвм § ¤ зг ®Ў ®Ўе®¤Ґ ¤ҐаҐў , Ґб«Ё ¬л е®вЁ¬, зв®Ўл
®Ўа Ў влў «Ёбм ўбҐ ўҐаиЁ­л (­Ґ в®«мЄ® «Ёбвмп).

ђҐиҐ­ЁҐ. Џгбвм x - ­ҐЄ®в®а п ўҐаиЁ­ . ’®Ј¤  «оЎ п ўҐаиЁ­  y
®в­®бЁвбп Є ®¤­®© Ё§ зҐвлаҐе Є вҐЈ®аЁ©. ђ бᬮваЁ¬ Їгвм Ё§ Є®а­п
ў y. Ћ­ ¬®¦Ґв:
( ) Ўлвм з бвмо ЇгвЁ Ё§ Є®а­п ў x (y ­Ё¦Ґ x);
(Ў) ᢥа­гвм ­ «Ґў® б ЇгвЁ ў x (y «ҐўҐҐ x);
(ў) Їа®©вЁ зҐаҐ§ x (y ­ ¤ x);
(Ј) ᢥа­гвм ­ Їа ў® б ЇгвЁ ў x (y Їа ўҐҐ x);
‚ з бв­®бвЁ, б ¬  ўҐаиЁ­  x ®в­®бЁвбп Є Є вҐЈ®аЁЁ (ў). “б«®ўЁп
⥯Ґам Ўг¤гв в ЄЁ¬Ё:
(ЋЌ‹) ®Ўа Ў®в ­л ўбҐ ўҐаиЁ­л ­Ё¦Ґ Ё «ҐўҐҐ;
(ЋЌ‹Ќ) ®Ўа Ў®в ­л ўбҐ ўҐаиЁ­л ­Ё¦Ґ, «ҐўҐҐ Ё ­ ¤.
‚®в Є Є Ўг¤Ґв ўлЈ«п¤Ґвм Їа®Ја ¬¬ :

procedure ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм
| {¤ ­®: (ЋЌ‹), ­ ¤®: (ЋЌ‹Ќ)}
begin
| {Ё­ў аЁ ­в: ЋЌ‹}
| while Ґбвм_ᢥаег do begin
| | ®Ўа Ў®в вм
| | ўўҐае_­ «Ґў®
| end
| {ЋЌ‹, ђ®Ў®в ў «ЁбвҐ}
| ®Ўа Ў®в вм;
| {ЋЌ‹Ќ}
end;

Ћб­®ў­®©  «Ј®аЁв¬:

¤ ­®: ђ®Ў®в ў Є®а­Ґ, ­ЁзҐЈ® ­Ґ ®Ўа Ў®в ­®
­ ¤®: ђ®Ў®в ў Є®а­Ґ, ўбҐ ўҐаиЁ­л ®Ўа Ў®в ­л

{ЋЌ‹}
ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм
{Ё­ў аЁ ­в: ЋЌ‹Ќ}
while Ґбвм_б­Ё§г do begin
| if Ґбвм_бЇа ў  then begin {ЋЌ‹Ќ, Ґбвм бЇа ў }
| | ўЇа ў®;
| | {ЋЌ‹}
| | ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм;
| end else begin
| | {Ћ‹Ќ, ­Ґ Ґбвм_бЇа ў , Ґбвм_б­Ё§г}
| | ў­Ё§;
| end;
end;
{ЋЌ‹Ќ, ђ®Ў®в ў Є®а­Ґ => ўбҐ ўҐаиЁ­л ®Ўа Ў®в ­л}

3.1.5. ЏаЁўҐ¤Ґ­­ п в®«мЄ® зв® Їа®Ја ¬¬  ®Ўа Ў влў Ґв ўҐаиЁ-
­г ¤® в®Ј®, Є Є ®Ўа Ў®в ­ «оЎ®© Ё§ ҐҐ Ї®в®¬Є®ў. Љ Є Ё§¬Ґ­Ёвм ҐҐ,
зв®Ўл Є ¦¤ п ўҐаиЁ­ , ­Ґ пў«пой пбп «Ёб⮬, ®Ўа Ў влў « бм ¤ў ¦-
¤л: ®¤Ё­ а § ¤®,   ¤агЈ®© а § Ї®б«Ґ ўбҐе бў®Ёе Ї®в®¬Є®ў? (‹Ёбвмп
Ї®-ЇаҐ¦­Ґ¬г ®Ўа Ў влў овбп Ї® а §г.)

ђҐиҐ­ЁҐ. Џ®¤ "®Ўа Ў®в ­® ­Ё¦Ґ Ё «ҐўҐҐ" Ўг¤Ґ¬ Ї®­Ё¬ вм "­Ё¦Ґ
®Ўа Ў®в ­® Ї® а §г, б«Ґў  ®Ўа Ў®в ­® Ї®«­®бвмо («Ёбвмп Ї® а §г,
®бв ­лҐ Ї® ¤ў )". Џ®¤ "®Ўа Ў®в ­® ­Ё¦Ґ, «ҐўҐҐ Ё ­ ¤" Ўг¤Ґ¬ Ї®­Ё-
¬ вм "­Ё¦Ґ ®Ўа Ў®в ­® Ї® а §г, «ҐўҐҐ Ё ­ ¤ - Ї®«­®бвмо".

Џа®Ја ¬¬  Ўг¤Ґв в Є®©:

procedure ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм
| {¤ ­®: (ЋЌ‹), ­ ¤®: (ЋЌ‹Ќ)}
begin
| {Ё­ў аЁ ­в: ЋЌ‹}
| while Ґбвм_ᢥаег do begin
| | ®Ўа Ў®в вм
| | ўўҐае_­ «Ґў®
| end
| {ЋЌ‹, ђ®Ў®в ў «ЁбвҐ}
| ®Ўа Ў®в вм;
| {ЋЌ‹Ќ}
end;

Ћб­®ў­®©  «Ј®аЁв¬:

¤ ­®: ђ®Ў®в ў Є®а­Ґ, ­ЁзҐЈ® ­Ґ ®Ўа Ў®в ­®
­ ¤®: ђ®Ў®в ў Є®а­Ґ, ўбҐ ўҐаиЁ­л ®Ўа Ў®в ­л

{ЋЌ‹}
ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм
{Ё­ў аЁ ­в: ЋЌ‹Ќ}
while Ґбвм_б­Ё§г do begin
| if Ґбвм_бЇа ў  then begin {ЋЌ‹Ќ, Ґбвм бЇа ў }
| | ўЇа ў®;
| | {ЋЌ‹}
| | ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм;
| end else begin
| | {Ћ‹Ќ, ­Ґ Ґбвм_бЇа ў , Ґбвм_б­Ё§г}
| | ў­Ё§;
| | ®Ўа Ў®в вм;
| end;
end;
{ЋЌ‹Ќ, ђ®Ў®в ў Є®а­Ґ => ўбҐ ўҐаиЁ­л ®Ўа Ў®в ­л Ї®«­®бвмо}

3.1.6. „®Є § вм, зв® зЁб«® ®ЇҐа жЁ© ў нв®© Їа®Ја ¬¬Ґ Ї® Ї®-
ап¤Єг а ў­® зЁб«г ўҐаиЁ­ ¤ҐаҐў . (Љ Є Ё ў ¤агЈЁе Їа®Ја ¬¬ е, Є®-
в®алҐ ®в«Ёз овбп ®в нв®© «Ёим Їа®ЇгбЄ®¬ ­ҐЄ®в®але Є®¬ ­¤ "®Ўа -
Ў®в вм".)
“Є § ­ЁҐ. ЏаЁ¬Ґа­® Є ¦¤®Ґ ўв®а®Ґ ¤Ґ©бвўЁҐ ЇаЁ ЁбЇ®«­Ґ­ЁЁ
нв®© Їа®Ја ¬¬л - ®Ўа Ў®вЄ  ўҐаиЁ­л,   Є ¦¤ п ўҐаиЁ­  ®Ўа Ў влў -
Ґвбп ¬ ЄбЁ¬г¬ ¤ў ¦¤л.

’ҐЇҐам ॠ«Ё§гҐ¬ ®ЇҐа жЁЁ б ¤ҐаҐў®¬ Ї®§ЁжЁ©. Џ®§ЁжЁо Ўг¤Ґ¬
ЇаҐ¤бв ў«пвм б Ї®¬®ймо ЇҐаҐ¬Ґ­­®© k: 0..n (зЁб«® дҐа§Ґ©) Ё ¬ б-
бЁў  c: array [1..n] of 1..n (c [i] - Є®®а¤Ё­ вл дҐа§п ­  i-®©
Ј®аЁ§®­в «Ё; ЇаЁ i > k §­ зҐ­ЁҐ c [i] а®«Ё ­Ґ ЁЈа Ґв). ЏаҐ¤Ї®« -
Ј Ґвбп, зв® ўбҐ Ї®§ЁжЁЁ ¤®ЇгбвЁ¬л (Ґб«Ё гЎа вм ўҐае­ҐЈ® дҐа§п,
®бв «м­лҐ ­Ґ Ўмов ¤агЈ ¤агЈ ).

program queens;
| const n = ...;
| var
| k: 0..n;
| c: array [1..n] of 1..n;
|
| procedure begin_work; {­ з вм а Ў®вг}
| begin
| | k := 0;
| end;
|
| function danger: boolean; {ўҐае­Ё© дҐа§м Ї®¤ Ў®Ґ¬}
| | var b: boolean; i: integer;
| begin
| | if k <= 1 then begin
| | | danger := false;
| | end else begin
| | | b := false; i := 1;
| | | {b <=> ўҐае­Ё© дҐа§м Ї®¤ Ў®Ґ¬ дҐа§Ґ© б ­®¬Ґа ¬Ё < i}
| | | while i <> k do begin
| | | | b := b or (c[i]=c[k]) {ўҐавЁЄ «м}
| | | | or (abs(c[[i]-c[k]))=abs(i-k)); {¤Ё Ј®­ «м}
| | | | i := i+ 1;
| | | end;
| | | danger := b;
| | end;
| end;
|
| function is_up: boolean {Ґбвм_ᢥаег}
| begin
| | is_up := (k < n) and not danger;
| end;
|
| function is_right: boolean {Ґбвм_бЇа ў }
| begin
| | is_right := (k > 0) and (c[k] < n);
| end;
| {ў®§¬®¦­  ®иЁЎЄ : ЇаЁ k=0 ­Ґ ®ЇаҐ¤Ґ«Ґ­® c[k]}
|
| function is_down: boolean {Ґбвм_б­Ё§г}
| begin
| | is_up := (k > 0);
| end;
|
| procedure up; {ўўҐае_­ «Ґў®}
| begin {k < n}
| | k := k + 1;
| | c [k] := 1;
| end;
|
| procedure right; {ўЇа ў®}
| begin {k > 0, c[k] < n}
| | c [k] := c [k] + 1;
| end;
|
| procedure down; {ў­Ё§}
| begin {k > 0}
| | k := k - 1;
| end;
|
| procedure work; {®Ўа Ў®в вм}
| | var i: integer;
| begin
| | if (k = n) and not danger then begin
| | | for i := 1 to n do begin
| | | | write ('<', i, ',' , c[i], '> ');
| | | end;
| | | writeln;
| | end;
| end;
|
| procedure UW; {ўўҐае_¤®_гЇ®а _Ё_®Ўа Ў®в вм}
| begin
| | while is_up do begin
| | | up;
| | end
| | work;
| end;
|
begin
| begin_work;
| UW;
| while is_down do begin
| | if is_right then begin
| | | right;
| | | UW;
| | end else begin
| | | down;
| | end;
| end;
end.

3.1.7. ЏаЁўҐ¤Ґ­­ п Їа®Ја ¬¬  ва вЁв ¤®ў®«м­® ¬­®Ј® ўаҐ¬Ґ­Ё
­  ўлЇ®«­Ґ­ЁҐ Їа®ўҐаЄЁ Ґбвм_ᢥаег (Їа®ўҐаЄ , ­ е®¤Ёвбп «Ё
ўҐае­Ё© дҐа§м Ї®¤ Ў®Ґ¬, вॡгҐв зЁб«  ¤Ґ©бвўЁ© Ї®ап¤Є  n). €§¬Ґ-
­Ёвм ॠ«Ё§ жЁо ®ЇҐа жЁ© б ¤ҐаҐў®¬ Ї®§ЁжЁ© в Є, зв®Ўл ўбҐ ваЁ
Їа®ўҐаЄЁ Ґбвм_ᢥаег/бЇа ў /б­Ё§г Ё ᮮ⢥вбвўгойЁҐ Є®¬ ­¤л ваҐ-
Ў®ў «Ё Ўл Є®«ЁзҐбвў  ¤Ґ©бвўЁ©, ®Ја ­ЁзҐ­­®Ј® ­Ґ § ўЁбп饩 ®в n
Є®­бв ­в®©.

ђҐиҐ­ЁҐ. „«п Є ¦¤®© ўҐавЁЄ «Ё, Є ¦¤®© ў®б室п饩 Ё Є ¦¤®©
­Ёб室п饩 ¤Ё Ј®­ «Ё Ўг¤Ґ¬ еа ­Ёвм Ўг«ҐўбЄ®Ґ §­ зҐ­ЁҐ - ᢥ¤Ґ­Ёп
® ⮬, ­ е®¤Ёвбп «Ё ­  нв®© «Ё­ЁЁ дҐа§м (ўҐае­Ё© дҐа§м ­Ґ гзЁвл-
ў Ґвбп). (‡ ¬ҐвЁ¬, зв® ў бЁ«г ¤®ЇгбвЁ¬®бвЁ Ї®§ЁжЁЁ ­  Є ¦¤®© Ё§
«Ё­Ё© ¬®¦Ґв Ўлвм ­Ґ Ў®«ҐҐ ®¤­®Ј® дҐа§п.).

3.2. ЋЎе®¤ ¤ҐаҐў  ў ¤агЈЁе § ¤ з е.

3.2.1. €бЇ®«м§®ў вм ¬Ґв®¤ ®Ўе®¤  ¤ҐаҐў  ¤«п аҐиҐ­Ёп б«Ґ¤г-
о饩 § ¤ зЁ: ¤ ­ ¬ ббЁў Ё§ n 楫ле Ї®«®¦ЁвҐ«м­ле зЁбҐ«
a[1]..a[n] Ё зЁб«® s; вॡгҐвбп г§­ вм, ¬®¦Ґв «Ё зЁб«® s Ўлвм
ЇаҐ¤бв ў«Ґ­® Є Є б㬬  ­ҐЄ®в®але Ё§ зЁбҐ« ¬ ббЁў  a. (Љ ¦¤®Ґ
зЁб«® ¬®¦­® ЁбЇ®«м§®ў вм ­Ґ Ў®«ҐҐ 祬 Ї® ®¤­®¬г а §г.)

ђҐиҐ­ЁҐ. Ѓг¤Ґ¬ § ¤ ў вм k-Ї®§ЁжЁо Ї®б«Ґ¤®ў вҐ«м­®бвмо Ё§ k
Ўг«ҐўбЄЁе §­ зҐ­Ё©, ®ЇаҐ¤Ґ«пойЁе, ўе®¤пв «Ё ў б㬬г зЁб« 
a[1]..a[k] Ё«Ё ­Ґ ўе®¤пв. Џ®§ЁжЁп ¤®ЇгбвЁ¬ , Ґб«Ё ҐҐ б㬬  ­Ґ
ЇаҐў®б室Ёв s.

‡ ¬Ґз ­ЁҐ. Џ® ба ў­Ґ­Ёо б Ї®«­л¬ ЇҐаҐЎ®а®¬ ўбҐе (2 ў б⥯Ґ-
­Ё n) Ї®¤¬­®¦Ґбвў вгв Ґбвм ­ҐЄ®в®ал© ўлЁЈали. Њ®¦­® в Є¦Ґ ЇаҐ¤-
ў аЁвҐ«м­® ®вб®авЁа®ў вм ¬ ббЁў a ў гЎлў о饬 Ї®ап¤ЄҐ,   в Є¦Ґ
бзЁв вм ­Ґ¤®ЇгбвЁ¬л¬Ё ⥠Ї®§ЁжЁЁ, ў Є®в®але б㬬  ®вЎа®иҐ­­ле
з«Ґ­®ў Ў®«миҐ, 祬 а §­®бвм бг¬¬л ўбҐе з«Ґ­®ў Ё s. Џ®б«Ґ¤­Ё©
ЇаЁс¬ ­ §лў ов "¬Ґв®¤®¬ ўҐвўҐ© Ё Ја ­Ёж". Ќ® ЇаЁ­жЁЇЁ «м­®Ј®
г«гз襭Ёп Ї® ба ў­Ґ­Ёо б Ї®«­л¬ ЇҐаҐЎ®а®¬ вгв ­Ґ Ї®«гз Ґвбп (нв 
§ ¤ з , Є Є Ј®ў®апв, NP-Ї®«­ , б¬. Ї®¤а®Ў­®бвЁ ў Є­ЁЈҐ Ђе®,
•®ЇЄа®дв  Ё “«м¬ ­  "Џ®бв஥­ЁҐ Ё  ­ «Ё§ ўлзЁб«ЁвҐ«м­ле  «Ј®аЁв-
¬®ў"). ’а ¤ЁжЁ®­­®Ґ ­ §ў ­ЁҐ нв®© § ¤ зЁ - "§ ¤ з  ® аоЄ§ ЄҐ"
(аоЄ§ Є ®ЎйҐ© Ја㧮Ї®¤кҐ¬­®бвмо s ­г¦­® гЇ Є®ў вм Ї®¤ § ўп§Єг,
а бЇ®« Ј п ЇаҐ¤¬Ґв ¬Ё ўҐб  a[1]..a[n]). ‘¬. в Є¦Ґ ў Ј« ўҐ 7
(а §¤Ґ« ® ¤Ё­ ¬ЁзҐбЄ®¬ Їа®Ја ¬¬Ёа®ў ­ЁЁ)  «Ј®аЁв¬ Ґс аҐиҐ­Ёп,
Ї®«Ё­®¬Ё «м­л© Ї® n+s.

3.2.2. ЏҐаҐзЁб«Ёвм ўбҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ Ё§ n ­г«Ґ©, Ґ¤Ё-
­Ёж Ё ¤ў®ҐЄ, ў Є®в®але ­ЁЄ Є п ЈагЇЇ  жЁда ­Ґ Ї®ўв®апҐвбп ¤ў 
а §  Ї®¤ап¤ (­Ґв ЄгбЄ  ўЁ¤  XX).

3.2.3. Ђ­ «®ЈЁз­ п § ¤ з  ¤«п Ї®б«Ґ¤®ў вҐ«м­®б⥩ ­г«Ґ© Ё
Ґ¤Ё­Ёж, ў Є®в®але ­ЁЄ Є п ЈагЇЇ  жЁда ­Ґ Ї®ўв®апҐвбп ваЁ а § 
Ї®¤ап¤ (­Ґв ЄгбЄ  ўЁ¤  XXX).

Љ нв®© ¦Ґ Є вҐЈ®аЁЁ ®в­®бпвбп § ¤ зЁ вЁЇ  "¬®¦­® «Ё б«®¦Ёвм
¤ ­­го дЁЈгаг Ё§ ЇҐ­в ¬Ё­®" Ё Ё¬ Ї®¤®Ў­лҐ. ‚ ­Ёе ў ¦­® 㬥«®Ґ
б®Єа йҐ­ЁҐ ЇҐаҐЎ®а  (ў®ўаҐ¬п а бЇ®§­ вм, зв® Ё¬Ґо饥бп а бЇ®«®-
¦Ґ­ЁҐ дЁЈга®Є 㦥 Їа®вЁў®аҐзЁв вॡ®ў ­Ёп¬, Ё Ї® нв®© ўҐвўЁ Ї®-
ЁбЄ ­Ґ Їа®¤®«¦ вм).
Соседние файлы в папке Шень