Problema |
Bine ati venit ca musafir! ( Logare | Inregistrare )
Problema |
26 Jan 2006, 02:58 PM
Mesaj
#1
|
|
Cronicar Grup: Moderator Mesaje: 2.132 Inscris: 16 June 04 Din: Bucuresti Forumist Nr.: 3.862 |
Salutare!
Nu sunt sigur că aici e locul potrivit să postez (dacă nu e... rog moderatorul să mute acest topic; sau sa-l închidă). Am următoarea problemă: Într-o grădină sunt n aspersoare. Pentru fiecare aspersor cunoaştem poziţia lui (x[i],y[i]) şi debitul de apă Q[i] (i = 1..n). Robinetul de alimentare cu apă se află la (x[0],y[0]) şi de-acolo trebuie să tragem o reţea arborescentă de conducte care să distribuie apa la toate cele n aspersoare. Dar trebuie să minimizăm costurile reţelei. Ştim că metrul liniar de conductă are un cost c proporţional cu radicalul debitului pe care-l suportă acea conductă: c = k*sqrt(Q). Deci dacă pe o anume distanţă două tronsoane de debite Q1 şi Q2 se pot contopi într-un singur tronson de debit Q1+Q2, costul va fi mai mic (radicalul sumei e mai mic de cât suma radicalilor). Întrebarea e: care ar fi un algoritm pentru determinarea arborelui de cost minim? Iată o schiţă explicativă: În imagine se văd conductele mai groase (şi mai scumpe) care cumulează mai mult debit, pe care apoi îl împart către conducte tot mai subţiri, către consumatorii finali. Am considerat că toţi consumatorii au acelaşi debit -- e o simplificare OK pentru o primă abordare. (Evident, problema e teoretică -- aspersoarele şi grădina sunt doar metafore.) Are cineva ceva idei? a -------------------- Trebuie să facem ceea ce credem că e bine, dar nu trebuie să credem că ceea ce facem e bine.
|
|
|
26 Jan 2006, 03:48 PM
Mesaj
#2
|
|
Cronicar Grup: Moderator Mesaje: 2.132 Inscris: 16 June 04 Din: Bucuresti Forumist Nr.: 3.862 |
Problema poate fi reformulată şi astfel:
N călători pleacă împreună de la "sursă", fiecare trebuind să ajungă în final la câte o destinaţie (x[i],y[i]). Costurile călătoriei împreună sunt mai mici decât costurile călătoriei de unul singur: pentru un grup, costul pe metru liniar este proporţional cu radical din numărul membrilor grupului. Grupul mare iniţial înaintează, dar la un moment dat devine mai eficient ca el să se rupă în două grupuri mai mici, care-şi continuă călătoriile în direcţii diferite. Sub-grupurile se împart apoi în sub-sub-grupuri şi tot aşa, până când se fărâmiţează în indivizi care-şi parcurg fiecare singur ultima porţiune până la destinaţie. Care-i algoritmul după care decidem când şi cum trebuie rupte grupurile pe parcurs, astfel încât costul călătoriei să fie minim pentru fiecare participant? (Errr... O fi echivalentă formularea asta cu cea iniţială? Trebuie arătat...) a -------------------- Trebuie să facem ceea ce credem că e bine, dar nu trebuie să credem că ceea ce facem e bine.
|
|
|
Versiune Text-Only | Data este acum: 15 May 2024 - 04:02 PM |