Ho un grafico planare non orientato in cui ogni nodo ha un peso. Voglio dividere il grafico in quanti più sottoprogrammi connessi disgiunti possibile (EDIT: o per raggiungere un peso medio minimo dei sottografi possibile), data la condizione che ogni sottografo debba raggiungere un peso minimo fisso (che è una somma di pesi dei suoi nodi). Anche un sottografo che contiene solo un singolo nodo è OK (se il peso del nodo è maggiore del minimo fisso).Massimizza il numero di sottografi con un peso minimo specificato
Quello che ho scoperto finora è un euristico:
create a subgraph out of every node
while there is an underweight subgraph:
select the subgraph S with the lowest weight
find a subgraph N that has the lowest weight among the neighbouring subgraphs of S
merge S to N
Chiaramente questo non è ottimale. Qualcuno ha una soluzione migliore? (Forse sono solo ignorante e questo non è un problema complesso, ma non ho mai studiato la teoria dei grafi ...)
EDIT (ulteriori dettagli in background): i nodi in questo grafico sono unità amministrative su scala ridotta per le quali dati statistici devono essere forniti. Tuttavia, le unità devono avere una certa dimensione minima della popolazione per evitare conflitti con la legislazione sui dati personali. Il mio obiettivo è creare aggregati in modo che il minor numero possibile di informazioni si perda. Le relazioni di vicinato servono come bordi del grafico, in quanto le unità risultanti devono essere contigue.
La maggior parte delle unità (nodi) nel set sono ben al di sopra della soglia minima. Circa 5-10% di essi è inferiore alla soglia di varie dimensioni, come visto sull'esempio (dimensione minima 50):
Senza la condizione di planarità, questo problema è sicuramente fortemente NP-rigido. Non mi aspetto un modo semplice per sfruttare la planarità se non un programma dinamico la cui esecuzione è esponenziale in √n (al contrario di n, usando il fatto che i grafici planari hanno treewidth O (√n)). –
Quanto è grande il grafico di interesse? Quanto è importante ottenere la soluzione ottimale? –
Il numero massimo è in decine di migliaia di nodi, con appx. 5 spigoli per nodo, in media (è un grafico di quartiere di una mappa di divisione amministrativa). Il tempo di esecuzione non è la preoccupazione principale, ma la soluzione dovrebbe essere ottimale. –