Date: | Thu, 15 Mar 2001 08:44:56 -0800 (PST) |
From: | Cristian Francu <cristian@google.com> | Block Address | Add to Address Book |
To: | probleme@ldc.ro |
Subject: | Re: patrascu - O problema de concurs |
|
|
On Thu, 15 Mar 2001, Radu Stefan wrote:
> > Se da un lac de MxN patratele, acoperit cu gheata, exceptand unele
> > patratele care se citesc din fisierul de intrare. O broasca trebuie
sa
> > mearga de la (1,1) la (M,N) si sa se intoarca inapoi. Ea face
sarituri
> > ca calul la sah. Evident, ea nu poate pasi decat pe gheata.
Problema e
> > ca unde paseste ea se sparge gheata, deci nu poate trece printr-o
> > patratica de doua ori. Aflati itinerariul cu numar minim de
sarituri.
> > [se cere nr. min de mutari; reconstituirea daca aveti o zi ploioasa
la
> > dispozitie]
> >
> > Problema s-a mai dat, dar noutatea e ca de data asta nu se accepta
> > back-uri (M,N<=100 de ex.).
>
> Singura rezolvare care mi-a venit in minte e oarecum euristica :
> faci un drum minim normal dupa care cresti costul de trecere prin
> patratelele deja folosite cu un coeficient oarecare, si tot faci
> drumuri minime variind costurile patratelelor dupa cum te taie capul.
> S-ar putea sa se poata demonstra ca pentru anumiti coeficienti iti
> da rezultatul corect.
Problema seamana cu una data la o olimpiada internationala, care zicea
ca
se da o retea de orase in plan, unele dintre ele au sosele intre ele.
Se
cere sa pleci din orasul cel mai de la est (E), sa ajungi in orasul cel
mai de la vest (V), iar apoi sa te intorci in orasul de la est trecind
prin toate orasele o singura data. Evident, drumul minim. Problema asta
se
rezolva cu programare dinamica, construind subprobleme de forma: P(i,j)
este drumul minim pornind din orasul i, mergind spre est pina la nodul
E
si apoi inapoi la orasul j, trecind prin orase diferite si acoperind
toate
orasele intre E si i sau j.
Am senzatia ca si problema asta se poate rezolva construind subprobleme
de
genul asta: daca notam cu A nodul de plecare si cu Z locul destinatie,
subproblemele vor fi P(i, j) = drumul minim de la i la j trecind prin A
si
fara a trece de doua ori prin acelasi nod. Sa presupunem ca un astfel
de
drum minim arata asa:
A-------i
\
-----k-j (k vecin al lui j)
Atunci, daca nu ma insel, A(k, i) este si el minim (incercati sa
demonstrati ca asa e). Caz in care devine posibila programarea
dinamica.
Odata calculate toate P(i, j) ci i diferit de j solutia este usor de
gasit: este min { P(Z, k) + 1 } unde k vecin al lui Z.
Ma insel? Greii de pe lista ce zic?
Cristi
Privacy Policy-
Terms of Service
-
Guidelines
Copyright © 1994-2001
Yahoo! Inc. All rights reserved.