Mai intai trebuie sa te autentifici.
Diferente pentru blog/suma-in-triunghi-rezolvare intre reviziile #3 si #68
Diferente intre titluri:
Rezolvare:Suma in triunghi
Rezolvare pentru "suma in triunghi" si functii convexe
Diferente intre continut:
*Rezolvarea pe scurt:* Functia <tex>2 dist(M, A) + dist(M, B) + dist(M, C)</tex> e o functie convexa. Functiile convexe isi ating maximul pe marginea domeniului de definitie. Astfel e de ajuns sa evaluam functia in punctele A, B si C si gasim ca maximul este 13 si e realizat in punctul C. *Functii convexe:* Problema este pretext pentru a discuta notiunea de 'functie convexa':http://en.wikipedia.org/wiki/Convex_function. O astfel de functie are proprietatea ca pentru oricare doua puncte de pe graficul ei, graficul se afla sub segmentul determinat de cele puncte. Mai formal, daca <tex>f:X->R</tex> unde <tex>X</tex> e un domeniu convex (interval etc.) atunci pentru oricare doua puncte <tex>x1</tex> si <tex>x2</tex> din <tex>X</tex> si orice <tex>t</tex> din intervalul <tex>[0, 1]</tex> avem ca <tex>f(tx_{1} + (1-t)x_{2}) \le tf(x_{1}) + (1-t)f(x_{2})</tex>. <tex>X</tex> poate fi orice spatiu vectorial, R, interval in o dimensiune, poligon convex in doua si asa mai departe. O proprietate importanta a functiilor convexe este ca au doar un minim local care este si global. Astfel problema *minimizarii valorii unei functii multi dimensionale* este mai simplu de rezolvat pentru functii convexe. Ea apare frecvent in *machine learning*. Functiile generale nu sunt usor de minimizat. Nu au o forma care poate fi rezolvata matematic sau sunt neregulate si au multe optime locale. Pentru a putea obtine solutii bune, de multe ori functiile generale sunt aproximate de functii convexe pentru care exista algoritmi eficienti de minimizare, cum ar fi 'cautare ternara':http://en.wikipedia.org/wiki/Ternary_search pentru cazul unidimensional sau 'gradient descent':http://en.wikipedia.org/wiki/Gradient_descent pentru cazul general. *Rezolvarea mai detaliata:* Functia distanta euclidiana fata de un punct fix e o functie convexa. _demonstratie:_ Vedem usor daca facem un grafic care este un con sau putem incerca sa ne uitam la derivate. Suma a doua functii convexe este tot o functie convexa. _demonstratie:_ <tex>f_{1}(tx_{1} + (1-t)x_{2}) \le tf_{1}(x_{1}) + (1-t)f_{1}(x_{2})</tex> <tex>f_{2}(tx_{1} + (1-t)x_{2}) \le tf_{2}(x_{1}) + (1-t)f_{2}(x_{2})</tex> => <tex>f_{1}(tx_{1} + (1-t)x_{2}) + f_{2}(tx_{1} + (1-t)x_{2}) \le t(f_{1}(x_{1}) + f_{2}(x_{1})) +</tex> <tex>(1-t)(f_{1}(x_{2}) + f_{2}(x_{2}))</tex> Astfel <tex>2dist(M, A) + dist(M, B) + dist(M, C)</tex> e si ea o functie convexa. !{margin: 1px; margin-right: 10px; border: 1px solid gray;}<blog/suma-in-triunghi-rezolvare?graph.gif! Maximul pentru o functie convexa e realizat pe marginea domeniului de definitie. _demonstratie:_ Din definitie, graficul intre <tex>x1</tex> si <tex>x2</tex> se afla sub segmentul determinat de <tex>(x1, f(x1))</tex> si <tex>(x_{2}, f(x_{2}))</tex> astfel pentru <tex>x_{1}</tex> si <tex>x_{2}</tex> pe contur unul dintre cele doua puncte va fi mai sus decat toate restul din grafic. Acum am demonstrat toti pasii din prima propozitie a articolului. In graficul alaturat puteti vedea cum se comporta functia. Punctele A, B si C au coordonatele (0, 0), (3, 0) respectiv (0, 4), iar culoarea graficului reprezinta suma ceruta in problema. Aveti aici codul in 'Octave':http://www.gnu.org/software/octave/ cu care e generat.
== code(c) |
#include <cstdio> main() { printf("92\n");
dist = @(x, y, x1, y1) sqrt((x - x1).^2 + (y - y1).^2) sumt = @(x, y) 2 * dist(x, y, 0, 0) + dist(x, y, 3, 0) + dist(x, y, 0, 4)
x=linspace(0, 3, 50) y=linspace(0, 4, 50) [xx,yy]=meshgrid(x,y) contourf(xx,yy,sumt(xx,yy))
x = linspace(0, 3, 50) y = linspace(0, 4, 50) [xx, yy] = meshgrid(x, y) contourf(xx, yy, sumt(xx, yy))
==
!{margin: 10px; margin-left: 0; border: 1px solid gray;}<blog/suma-in-triunghi-rezolvare?graph.gif!
Cerinta de gasire a maximului e putin fortata pentru a face problema posibil de rezolvat in cap. Pentru ca in general la functii convexe cautam minimul. Putem avea maxime locale in orice colt al frontierei, deci pentru o frontiera cu multe colturi nu avem algoritmi eficienti. 'Adapost2':problema/adapost2 se poate rezolva folosind idei din acest post. Sper ca v-am deschis apetitul pentru functii convexe :).
Diferente intre securitate:
private
protected
Diferente intre topic forum:
6744