300 likes | 408 Views
Meccanismi one-parameter. Riepilogo. Archi di un grafo controllati da agenti egoistici Solo l’agente conosce il peso associato al proprio arco Obiettivo: calcolare una “buona” soluzione di un certo problema di ottimizzazione rispetto a pesi reali
E N D
Riepilogo • Archi di un grafo controllati da agenti egoistici • Solo l’agente conosce il peso associato al proprio arco • Obiettivo: calcolare una “buona” soluzione di un certo problema di ottimizzazione rispetto a pesi reali • Strumento: progettazione di un meccanismo truthful (pagamento opportuno degli agenti per convincerli a dire la verità!)
Tecniche note Meccanismi VCG (pivotal) Validi per problemi utilitari (es., MST e SP) Un problema è utilitario quando: f(t)=ivi(ti,o) g(r) arg min {ivi(ri,o)} o F pi(x=g(r)) =j ivj(rj,g(r-i)) - j ivj(rj,g(r))
SPT non cooperativo • Problema: broadcasting • una sorgente s vuole spedire un messaggio ai nodi V\{s} • Informazione posseduta dagli agenti: tempo di attraversamento dei link • Obiettivo: minimizzare il tempo di consegna di ogni messaggio
Formulazione • F: insieme alberi ricoprenti V (radicati in s) • Per ogni T F • f(t)= dT(s,v) • ||e|| è la molteplicità dell’arco e, intesa come numero di cammini ai quali appartiene = te ||e|| eE(T) v V ve(te,T)= te Protocollo multicast: f(t) ve(te,T) problema non utilitario! eE(T)
Come tratto i problemi non utilitari? …per problemi one-parameter uso i meccanismi one-parameter (OP)
Un problema è one-parameter se • L’informazione posseduta da ogni agente ai è un singolo parametro ti • La valutazione di ai ha la forma vi(ti,o)= ti wi(o), wi(o): carico dilavoro per ai in o
SPT non cooperativo(ogni agente controlla un arco) • F: insieme alberi ricoprenti V (radicati in s) • Per ogni T F • f(t)= dT(s,v) = te ||e|| • ve(te,T)= • ve(te,T)= te we(T) eE(T) v V te se e E(T) Multicast: caso non utilitario 0 altrimenti 1 se e E(T) we(T)= altrimenti 0
VCG vs OP • Meccanismi VCG: valutazioni (costi) e tipi arbitrari ma problemi utilitari • Meccanismi OP: funzione di scelta sociale arbitraria ma tipi a singolo-parametro e valutazioni vincolate • Se un problema è utilitario e one-parameter meccanismo (esatto) VCG e OP coincidono
Una proprietà interessante Definizione Un algoritmo g() per un problema OP di minimizzazione è monotono se agente ai, wi(g(r-i,ri)) è non crescente rispetto a ri, per tutti gli r-i=(r1,…,ri-1,ri+1,…,rN) Notazione Scriveremo wi(r) al posto di wi(g(r))
Teorema 1 Condizione necessaria affinché un meccanismo M=<g(r),p(r)> per un problema OP sia veritiero è che g(r) sia monotono. Dim (per assurdo) Supponiamo g() non monotono, e… …facciamo vedere che nessuno schema di pagamento può rendere M veritiero Se g(٠) è non monotono esiste un agente ai e un vettore r-i tale che wi(r-i,ri) è non “non crescente”…
Dim (continua) • Se ti=x e ri=ti vi(ti,o)=x wi(r-i,x) • Se ti=y e ri=ti vi(ti,o)=y wi(r-i,y) • Se ti=x e ri=y ai aumenta il suo costo di A • Se ti=y e ri=x ai ha un risparmio di A+k wi(r-i,ri) wi(r-i,y) A k wi(r-i,x) costo per ai caso 3 costo per ai caso 4 ri x y
Dim (continua) • Sia ∆p=pi(r-i,y) - pi(r-i,x) • Se M è truthful deve essere: • ∆p A (altrimente quando ti=x, ai dichiara y, in quanto in tal caso il suo costo aumenta di A, e quindi se ∆p>A, la sua utilità aumenta!) • ∆p ≥ A+k (altrimenti quando ti=y, ai dichiara x, in quanto in tal caso il suo costo diminuisce di A+k, e quindi se ∆p<A+k, ciò significa che il decremento nel pagamento è minore del decremento del costo, ovvero la sua utilità aumenta!) … ma k è strettamente positivo! Assurdo: g(٠) deve essere monotono! wi(r-i,ri) wi(r-i,y) A k wi(r-i,x) ri x y
Meccanismi one-parameter (OP) • g(r): qualsiasi algoritmo monotono che risolva in modo ottimo il problema OP soggiacente ri • pi(g(r)) =hi(r-i) + ri wi(r) - ∫ wi(r-i,z) dz 0 hi(r-i): funzione arbitraria indipendente da ri Scriveremo pi(r) al posto di pi(g(r))
Teorema 2: Un meccanismo OP (per un problema OP) è veritiero. Dim: Facciamo vedere che l’utilità di un agente ai può solo decrescere se ai mente Siano r-i le dichiarazioni degli altri agenti Il pagamento fornito ad ai (quando dichiara ri) è: ri pi(r) =hi(r-i) + ri wi(r) - ∫ wi(r-i,z) dz 0 Ininfluente perché indipendente da ri pongo hi(r-i)=0
wi(r-i,x) x Dim (continua) ti ti • ui(ti,g(r-i,ti))= pi(g(r-i,ti))-vi(ti, g(r-i,ti))= tiwi(g(r-i,ti))-∫ wi(r-i,z) dz- tiwi(g(r-i,ti)) =-∫ wi(r-i,z) dz • Se ai dichiara x>ti: • La valutazione diventa: C= tiwi(r-i,x) • il pagamento diventa: P= xwi(r-i,x) - ∫ wi(r-i,z) dz ai sta perdendo G 0 0 x 0 wi(r-i,ti) P G C ti
Dim (continua) ti 0 • ui(ti,(r-i,ti))= - ∫ wi(r-i,z) dz • Se ai dichiara x<ti • La valutazione diventa C • il pagamento diventa P ai sta perdendo G ai non ha convenienza a mentire! P G wi(r-i,x) wi(r-i,ti) C x ti
Sulla funzione hi(r-i) Un meccanismo garantisce la volontaria partecipazione (VP) se l’utilità di un qualsiasi agente (che dichiara il vero) ha sempre un utile non negativo Ma il pagamento di ai quando dichiara ri è: ri pi(r) =hi(r-i)+ ri wi(r) -∫ wi(r-i,z) dz 0 ∞ ∫ wi(r-i,z) dz, Se scegliamo la costante hi(r-i)= 0 ∞ pi(r) =ri wi(r) + ∫ wi(r-i,z) dz il pagamento diventa: ri L’utilità di un agente che dichiara il vero diventa: ∞ ui(ti,g(r)) =∫ wi(r-i,z) dz ≥ 0. ti
Meccanismi one-parameter: il problema dell’albero dei cammini minimi a sorgente singola
SPT non cooperativo(ogni agente controlla un arco) • Input: un grafo G=(V,E) biconnesso sugli archi, in cui ogni arco corrisponde in modo biunivoco ad un insieme di agenti egoisti, ed un nodo sorgente sV; il tipo di un agente è il costo di utilizzo dell’arco (quindi tipo>0); • SCF: un albero dei cammini minimi radicato in s in G=(V,E,t).
se e E(T) 1 we(T)= altrimenti 0 SPT non utilitario • Per ogni albero ricoprente T di G radicato in s, la funzione obiettivo minimizzata dalla SCF è: f(t)= arg min { dT(s,v) = te ||e||} • Con protocollo multicast : ve(te,T)= e quindi f(t) arg min ve(te,T) (problema non utilitario) • Ma il problema è one-parameter, in quanto ve(te,T)= te we(T), ove TF eE(T) v V te se e E(T) altrimenti 0 eE TF
Meccanismo one-parameterper l’SPT non utilitario • MSPT= <g(r), p(x=g(r))> • g(r): dato il grafo e le dichiarazioni, calcola un SPT SG(s) di G=(V,E,r) utilizzando l’algoritmo di Dijkstra. • p(x): per ogni arco e E ∞ pe=re we(r) +∫we(r-e,z) dz re così da garantire la partecipazione volontaria.
Truthfulness Osservazione: MSPT è truthful. La truthfulness segue dal fatto che MSPT è un meccanismo OP. Infatti, l’algoritmo di Dijkstra per il calcolo dell’SPT è monotono, in quanto il carico di lavoro per un agente ae ha sempre la forma: L’algoritmo del meccanismo è monotono! 1 Өe : valore soglia Өe è il valore tale che, fissato r-e: se ae dichiara al più Өe, allora e è selezionato se ae dichiara più di Өe, allora e non è selezionato
Sui pagamenti • pe=0, se e non è un arco selezionato • pe= Өe, se e è nella soluzione 1 Өe : valore soglia re re ∞ pe=re we(r) + ∫ we(r-e,z) dz = 0+0 = 0 re ∞ pe=re we(r) + ∫ we(r-e,z) dz = re + Өe -re = Өe re
Sulle soglie Sia e=(u,v) un arco in SG(s) (u più vicino a s che v) • e resta in SG(s) finché uso e per raggiungere v • Allora, Өe=dG-e(s,v)-dG(s,u) Esempio re=1 re= 2+ε re= 3+ε s s s 1 1 1 Өe = 3 u u u 2 2 2 e e e 1 2+ε 3+ε 6 6 6 v v v 2 2 2 3 3 3
Una soluzione banale e=(u,v) SG(s) applichiamo l’algoritmo di Dijkstra al grafo G-e e troviamo dG-e(s,v) Complessità: k=n-1 archi per O(m + n logn): O(mn + n2 logn) time La soluzione che proponiamo costerà: O(m + n logn) time
Definizione di Өe s u x e f v y dG-e(s,v)= min {dG(s,x)+w(f)+dG(y,v)} f=(x,y)C(e) ove w(f) denota il peso dichiarato per l’arco f
Definizione di Өe • Calcolare dG-e(r,v) (e quindi Өe) vuol dire individuare l’arco f* tale che: f*= arg min {dG(s,x)+w(f)+dG (y,v)} f=(x,y)C(e) = arg min {dG(s,x)+w(f)+dG (y,v)+dG(s,v)} f=(x,y)C(e) = arg min {dG(s,x)+w(f)+dG(s,y)} Perché dG(s,v) non dipende da f f=(x,y)C(e) lo chiamo k(f) Osservazione: k(f) è un valore univocamente associato all’arco f: vale per tutti gli archi di SG(s) che formano un ciclo con f.
Calcolo delle soglie • Costruiamo il transmuter (rispetto a SG(s) ) • Eseguiamo l’algoritmo (analisi di sensitività) per il calcolo dei valori up(e) etichettando i nodi pozzo t(f) con i valori k(f) (invece che w(f)) • Ogni arco e SG(s) riceverà il suo valore miglior valore k(f*) • Өe= (k(f*)-dG(s,v)) - dG(s,u) • Complessità temporale: O(m (m,n)) dG-e(s,v)
Complessità del meccanismo Teorema MSPT è calcolabile in tempo O(m + n log n). Dim.: Complessità di g(٠): O(m + n log n) (Dijkstra con Heap di Fibonacci) Calcolare tutti i pagamenti costa: O(m (m,n))=O(m + n log n) perché (m,n) costante quando m=(n log log n)