infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: David M din Mai 05, 2013, 11:54:31



Titlul: Branch and Bound
Scris de: David M din Mai 05, 2013, 11:54:31
Salut!
Am o mica problema cu aceasta tehnica. Sunt n canibali si n misionari pe malul unui rau. pe rau se afla o barca ce are capacitatea de k<n persoane si trebuie sa transport atat canib alii cat si misionarii pe celalalt mal al raului cu aceasta barca. Exista o restrictie: pe oricare dintre maluri nu pot sa fie mai multi canibali decat misionari, intrucat canibalii ar manca misionarii in acest caz. restrictia nu este valabila si pentru barca: in barca pot sa fie 2 canibali si un singur misionar de exemplu, iar barca nu trebuie neaparat sa fie plina.  Doresc sa scriu un program in C care sa imi returneze solutia cu numarul cel mai mic de traversari ale raului pentru a transfera canibalii si misionarii pe celalalt mal al apei.  Ideea e ca trebuie sa folosesc Branch and Bound pentru aceasta si caut o functie de bounding cat mai buna intrucat aceasta este cheia eficientei programului. Ceea ce va rog eu este sa imi propuneti o solutie pentru aceasta functie de bounding.

Mersi anticipat!


Titlul: Răspuns: Branch and Bound
Scris de: Alex Velea din Mai 08, 2013, 08:13:52
Daca numarul de canibali trebuie sa fie <= nr_misionari, tot timpul muti perechi de cate 2.
Nu are rost sa duci pe cineva inapoi, opinia mea.

Daca nu, incerci sa faci acelasi lucru, dar cu 2 canibali in barca tot timpul.
Sper sa fie ok.