Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Web Analytics
Cookie Policy Terms and Conditions Problem osmih dam - Wikipedija, prosta enciklopedija

Problem osmih dam

Iz Wikipedije, proste enciklopedije

Slika:chess_zhor_26.png
Slika:chess_zver_26.png
Slika:chess_zver_26.png
Slika:chess_zhor_26.png
Ena od 12-ih rešitev

Problém ôsmih dám je problem šahovskega tipa in zahteva postavitev osmih dam na šahovnici 8×8, tako da druga druge ne napadajo. Pri tem veljajo običajna pravila gibanja dame. Barva figure je nepomembna, tako da lahko vsaka figura napade katerokoli drugo. Ali drugače rečeno, dve dami ne moreta hkrati biti v isti vrstici, stolpcu ali diagonali.

Vsebina

[uredi] Zgodovina

Skozi čas je problem obravnavalo veliko matematikov. Najbolj znani med njimi so Gauss, Pólya in Lucas. Problem je poseben primer splošnejšega problema, ki zahteva rešitve postavitev n dam na šahovnici n×n.

Zanimivo je, da veliko ljudi pripisuje problem in njegovo rešitev Gaussu. Problem je dejansko prvi predlagal nemški šahist Max Bezzel leta 1848 v časopisu Berliner Schachzeitung. S poskušanjem je do prvih 60 rešitev prišel Franz Nauck in jih 1. junija 1850 objavil v časopisu Leipziger Illustrierte Zeitung. Nauck (sicer slep od rojstva) je tudi posplošil problem na n dam in šahovnico n×n. Gauss se je po Nauckovi objavi rešitev lotil problema in sam našel le 72 rešitev, ki jih je zapisal 2. septembra 1850 v pismu svojemu prijatelju, astronomu Schumachru. Tedaj še niso poznali postopkov reševanja in s preskušanjem se da nalogo rešiti v dobrih desetih urah. Nauck je 21. septembra 1850 v isti reviji objavil vseh 92 rešitev. Tak potek dogodkov je ugotovil nemški raziskovalec problemov iz razvedrilne matematike V. Arens. Leta 1874 je S. Günther predložil postopek reševanja s pomočjo determinant, angleški matematik Glaisher pa je še dodelal ta pristop. Glaisher je tudi prvi dokazal, da obstaja natanko 92 rešitev.

Problem se je v 1990. znašel v razširjeni računalniški igri The 7th Guest.

[uredi] Rešitve

Problem osmih dam ima 92 različnih rešitev, oziroma 12 rešitev, če upoštevamo še simetrijske operacije, kot so vrtenje in zrcaljenje šahovnice v skladu z Burnsideovo lemo (Pólyev izrek).

Osnovne rešitve urejene leksikografsko so:

  1. 1, 5, 8, 6, 3, 7, 2, 4
  2. 1, 6, 8, 3, 7, 4, 2, 5
  3. 2, 4, 6, 8, 3, 1, 7, 5
  4. 2, 5, 7, 1, 3, 8, 6, 4
  5. 2, 5, 7, 4, 1, 8, 6, 3
  6. 2, 6, 1, 7, 4, 8, 3, 5
  7. 2, 6, 8, 3, 1, 4, 7, 5
  8. 2, 7, 3, 6, 8, 5, 1, 4
  9. 2, 7, 5, 8, 1, 4, 6, 3
  10. 3, 5, 2, 8, 1, 7, 4, 6
  11. 3, 5, 8, 4, 1, 7, 2, 6
  12. 3, 6, 2, 5, 8, 1, 7, 4


Splošni problem n dam ima število rešitev za n ≥ 1 (OEIS A000170):

1, 0, 0, 2, 10, 4, 40, 92, 352, 724, 2680, 14200, 73712, 365596, 2279184, 14772512, 95815104, 666090624, 4968057848, 39029188884,
314666222712, 2691008701644, 24233937684440, ...

Šahovnici za n = 2, 3 nimata rešitev.

Število osnovnih rešitev splošnega problema za n ≥ 1 (OEIS A002562):

1, 0, 0, 1, 2, 1, 6, 12, 46, 92, 341, 1787, 9233, 45752, 285053, 1846955, 11977939, 83263591, 621012754, 4878666808,
39333324973, 336376244042,3029242658210, ...

[uredi] Sorodni problemi

  • Uporaba drugih figur
Na šahovnico 8×8 lahko postavimo 32 neodvisnih skakačev, 14 lovcev ali 16 kraljev. Lahko uporabimo tudi pravljične šahovske figure, na primer, amazonke.
  • Problem amazonk.
Amazonka (imenovana tudi superdama) je figura, ki se giblje kot dama in kot skakač. Postaviti je možno deset amazonk na šahovnico 10×10, da druga druge ne napadajo, na točno štiri načine. Na manjših šahovnicah ne obstaja rešitev problema z amazonkami.
  • Nestandardne šahovnice
Pólya je raziskoval problem n dam na šahovnici v obliki svitka. Raziskovali so tudi druge oblike. Na primer trirazsežno šahovnico.
  • Prevlada
Za dano šahovnico n×n je potrebno najti število prevlade, ki pomeni najmanjše število dam (ali drugih figur), da so napadena vsa polja. Pri tem velja, da je polje na katerem stoji figura že napadeno. Glej problem petih dam.
Postavitev devetih dam in enega kmeta, da se dame med sabo ne napadajo. Posplošitev, ki trenutno ni znana je, šahovnica n×n in m > n dam. Rešitev išče najmanjše število kmetov, da se spet dame ne bodo napadale.
Paul B. Muljadi je pokazal, da če ostevilčimo 64 polj šahovnice zaporedoma od 1 do 64, lahko vse različne rešitve prikažemo z 92 celoštevilskimi zaporedji, kjer položaj dame predstavlja člen.
Ena rešitev je na primer
6,9,21,26,40,43,55,60\;
Ker mora vsaka dama biti v natančno eni vrstici ali stolpcu (in diagonali) in ker je enako število dam kot je vrstic in stolpcev, bo vsota takšnega zaporedja vedno ista. V zgornjem zaporedju bo vsota 8 + Σ(1..7) + 8 · Σ(1..7) = 260, kar predstavlja magično konstanto za problem osmih dam za vseh 92 različnih rešitev.
Seveda lahko rešitve zapišemo še drugače. Na primer za zgornjo rešitev s številčnim nizom:
6,1,5,2,8,3,7,4 \; ,
ali v algebrskem šahovskem zapisu:
a6, b1, c5, d2, e8, f3, g7, h4,
ali z matriko:
\begin{bmatrix}   0& 0& 0& 0& 0& 1& 0& 0\\  1& 0& 0& 0& 0& 0& 0& 0\\  0& 0& 0& 0& 1& 0& 0& 0\\  0& 1& 0& 0& 0& 0& 0& 0\\  0& 0& 0& 0& 0& 0& 0& 1\\  0& 0& 1& 0& 0& 0& 0& 0\\  0& 0& 0& 0& 0& 0& 1& 0\\  0& 0& 0& 1& 0& 0& 0& 0\\ \end{bmatrix} \; .
Muljadi je tudi odkril, da je magična konstanta problema osmih dam enaka kot magična konstanta magičnih kvadratov reda 8.

[uredi] Problem osmih dam kot primer uporabe različnih algoritmov

Problem osmih dam je dober primer preprostega vendar ne trivialnega problema. Zaradi tega se velikokrat uporablja kot zgled za različne programerske postopke, od katerih velja omeniti netradicionalne pristope kot so logično programiranje ali genetski algoritmi.

Največkrat se uporablja kot zgled problema, ki se ga da rešiti z rekurzivnim algoritmom tako, da se problemu n dam dodaja posamezna dama k poljubni rešitvi problema (n-1) dam. Z matematično indukcijo se tako pride do problema 0 dam, kar predstavlja prazno šahovnico.

[uredi] Primeri programov

[uredi] Primer programa v pascalu

Spodnji program rešuje nalogo v programskem jeziku pascal s pomočjo rekurzije. Izpiše vseh 92 rešitev.

program osemdam(output);
var st, j : integer;
    a : array [ 1.. 8] of boolean;
    b : array [ 2..16] of boolean;
    c : array [-7.. 7] of boolean;
    x : array [ 1.. 8] of integer;
  procedure try(i:integer);
  var j,k:integer;
  begin
    for j:=1 to 8 do begin
      if a[j] and b[i+j] and c[i-j]
      then begin
        x[i] := j;
        a[j] := false; b[i+j] := false; c[i-j] := false;
        if i<8 then {rekurzivni klic}
          try(i+1)
        else
        begin {izpis resitve}
          inc(st); write(st:5,'. ');
          for k:=1 to 8 do write(x[k]); writeln;
        end;
        a[j] := true; b[i+j] := true; c[i-j] := true;
      end; {if}
    end; {for}
  end; {try}
 begin {glavni program}
   for j:= 1 to 8  do a[j]:=true;
   for j:= 2 to 16 do b[j]:=true;
   for j:= -7 to 7 do c[j]:=true;
   st:=0;
   try(1);
 end.

Vir: N. Wirth, Računalniško programiranje I, Ljubljana, 1981.

[uredi] Pimer programa v Q

Algoritem za reševanje problema n dam, zapisan v Q, ki uporablja postopek vračanja (backtracking):

queens N = search N 1 1 [];

search N I J P = write P || writes "\n" if I>N;
= search N (I+1) 1 (P++[(I,J)]) || fail if safe (I,J) P;
= search N I (J+1) P if J<N;
= () otherwise;

safe (I1,J1) P = not any (check (I1,J1)) P;

check (I1,J1) (I2,J2)
= (I1=I2) or else (J1=J2) or else
(I1+J1=I2+J2) or else (I1-J1=I2-J2);

[uredi] Primer programa za HP-41

Glej HP-41.

[uredi] Glej tudi

  • funkcionalno programiranje
  • matematična igra

[uredi] Zunanje povezave

[uredi] Povezave do rešitev

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu