infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: ditzone din Aprilie 03, 2006, 22:44:41



Titlul: 226 Colorare
Scris de: ditzone din Aprilie 03, 2006, 22:44:41
Aici puteţi discuta despre problema Colorare (http://infoarena.ro/problema/colorare).


Titlul: Raspuns: 226 Colorare
Scris de: Prigoana Alexandru din Aprilie 06, 2006, 22:32:34
aici e clar back nu ? am incercat unul care verifica toate posibilitatile de colorare da imi iese din timp pentru multe teste ... nu stiu cum sal mai optimizez  :?


Titlul: Raspuns: 226 Colorare
Scris de: ditzone din Aprilie 06, 2006, 22:36:24
Poate te inspira un pic solutia de la Zebughil (solutia in 3^n)
http://info.devnet.ro/articole.php?page=art&art=74&artpage=5


Titlul: Raspuns: 226 Colorare
Scris de: Toma Radu din Iulie 12, 2006, 00:38:30
Pe testul :

Cod:
5 4
1 2
3 4
4 5
3 5

va da cumva 3 36?
inca ceva...trebuie colorat graful cu exact p culori sau cu maxim p culori?


Titlul: Re: 226 Colorare
Scris de: Bogdan-Cristian Tataroiu din Iulie 12, 2006, 08:11:07
Da, e bine 3 36...

"Se cere determinarea numarului minim de culori necesar pentru o colorare valida. Pentru acest numar minim de culori se cere numarul de colorari valide ale nodurilor grafului."
Graful trebuie colorat cu exact p culori, unde p este minim...

Se poate rezolva problema si cu back in 0.01 daca te gandesti bine :)


Titlul: Raspuns: 226 Colorare
Scris de: Toma Radu din Iulie 12, 2006, 13:04:52
Eu am incercat alta metoda... numarul minim de culori l-am determinat ca fiind numarul maxim de muchii ce se intalnesc intr-un nod din cele n. Apoi pentru fiecare punct neselectat am pornit un DF din el, si am notat intr-un vector nr[] - numarul de culori in care poate fi colorat nodul i...iar numarul de culori este numarul minim de culori - numarul de vecini care i-am colorat deja.

Cod:

        1                           1(3)                      1(3)                         1(3)               
       / \            ->           / \            ->         / \             ->           / \                     
     /     \                     /     \                   /     \                      /     \             
    2      3                     2      3                  2(2)   3                    2(2)   3(2)             

in paranteza am notat numarul de moduri in care poate fi colorat nodul i
si la sfarsit inmultesc toate valorile dintre nr[];
ar trebui sa fie corect, insa iau WA.....de ce?


Titlul: Raspuns: 226 Colorare
Scris de: Filip Cristian Buruiana din Iulie 12, 2006, 13:59:54
E in mod evident WA pentru ca este cunoscut ca orice problema de colorare este NP-completa ( adica nu exista algoritmi polinomiali de rezolvare... ). Algoritmul tau este unul Greedy si pana acum nu s-a gasit nici un algoritm de acest gen pentru o problema de colorare. Deci sigur pentru grafuri mai mari algoritmul tau nu da rezultatul bun.
Un algoritm O(N!) este usor de scos, dar merge si folosind metoda de la zebughil ( un fel de dinamica pe multimi de noduri - tot exponential e, pentru ca ai 2^N submultimi de noduri, exponential in N ).


Titlul: Raspuns: 226 Colorare
Scris de: Andrei Grigorean din Iulie 13, 2006, 14:54:48
Un algoritm O(N!) este usor de scos, dar merge si folosind metoda de la zebughil ( un fel de dinamica pe multimi de noduri - tot exponential e, pentru ca ai 2^N submultimi de noduri, exponential in N ).

cica back optimizat merge cel mai bine.


Titlul: Re: 226 Colorare
Scris de: Bogdan-Cristian Tataroiu din Iulie 14, 2006, 09:31:27
Tocmai am spus mai sus ca backu (in O(N!)) merge in 0.01... rezolvarea in 3^n merge si in 0.2 pe unele cazuri. :P


Titlul: Re: 226 Colorare
Scris de: Tiberiu-Lucian Florea din Iulie 14, 2006, 21:00:38
Da, dar asta nu inseamna ca rezolvarea in N! e cea mai buna sau cea mai inteligenta.. e pur si simplu o rezolvare care se poate optimiza si opri in multe cazuri. Cred ca e mai util pentru cei care rezolva problema sa o rezolve prin cealalta metoda.


Titlul: Răspuns: 226 Colorare
Scris de: alexandru andronache din August 25, 2008, 20:34:01
Cat de mare e numarul maxim de posibilitati? Intra in long long?


Titlul: Răspuns: 226 Colorare
Scris de: Filip Cristian Buruiana din August 25, 2008, 21:19:00
Da, intra pe long long.


Titlul: Răspuns: 226 Colorare
Scris de: Ovidiu Chis din Decembrie 05, 2010, 22:04:02
Cum se pot consulta sursele trimise la aceasta problema, avand in vedere ca nu este acces momentan.


Titlul: Răspuns: 226 Colorare
Scris de: Paul-Dan Baltescu din Decembrie 05, 2010, 22:23:26
Doar pentru unele probleme sunt accesibile sursele si acestea sunt marcate corespunzator. Colorare nu este una dintre aceste probleme.


Titlul: Răspuns: 226 Colorare
Scris de: Ovidiu Chis din Decembrie 05, 2010, 23:02:53
Ok. Se poate posta aici parte din sursa? sau hint-uri.


Titlul: Răspuns: 226 Colorare
Scris de: Boaca Cosmin din Martie 09, 2011, 20:11:20
Daca poate cineva as dori sa-mi dea  un test mai dificil ( nu ma refer la cele oficiale ) deoarece nu imi dau seama ce gresesc. Determin numarul minim de culori din prima colorare care mi-o da backtrackingul si apoi generez toate colorarile cu numarul de culori mergand doar pana la cel determinat prin metoda mentionata . Pe toate testele kre le-am dat .. imi merge.


Titlul: Răspuns: 226 Colorare
Scris de: Popa Razvan din Februarie 28, 2013, 17:23:51
Cum se combina 2 submultimi de noduri ale unei multimi la problema asta?  :-k
Nu imi dau seama cum sa combin solutiile pentru dinamica... ](*,)

L.E.
Se pare ca avea legatura cu submultimile independente ale grafului.


Titlul: Răspuns: 226 Colorare
Scris de: Arhire Andrei din August 03, 2018, 01:12:33
Metoda mea e:  pt fiecare componenta conexa retinem nr minim de culori in v[ ]. Pt fiecare c.c facem bfs si in functie de culorile vecine stabilim culoarea nodului curent. Parcurgem v[ ] - ul descrescator si facem inmultirile.