Ho un numero di rettangoli probabilmente sovrapposti, di dimensione e posizione casuali all'interno di un piano fisso. Poiché questi rettangoli sono casuali, alcuni non possono sovrapporsi:minimizzazione della sovrapposizione in rettangoli casuali
|----- | | |----| |----| | | |----|
Alcuni possono sovrapporsi da un solo angolo:
|-----| | |--|--| |--|--| | |-----|
Alcuni possono essere contenute all'interno di un altro rettangolo:
|----------------| | | | |-----| | | | | | | |-----| | |----------------|
Alcuni possono passare attraverso un altro rettangolo:
|----------------| | | |--|-------------------| | | | | |--|-------------------| |----------------|
ecc.
Sto cercando un algoritmo che mi fornisca un insieme di rettangoli che rappresentano la stessa area dell'insieme di input, ma senza sovrapposizioni. Alcuni casi sono ovvi: i rettangoli contenuti in un rettangolo più grande possono essere scartati ei rettangoli che si sovrappongono in un angolo possono essere suddivisi in tre rettangoli, così come i rettangoli che passano attraverso un altro rettangolo. Quello che sto cercando, è un algoritmo generico che si occupa di tutti questi casi. Non mi interessa molto se non è brillantemente efficiente - il set di input è piuttosto piccolo (25 rettangoli al massimo)
Trovare i rettangoli che si sovrappongono è facile, ma diventa rapidamente più difficile da lì, specialmente se si considera che un rettangolo potrebbe sovrapporsi a più altri rettangoli.
Questo sta facendo la mia testa. Qualche suggerimento?
Aggiornamento:
Ho appena realizzato una cosa:
posso né eseguire questo algoritmo nel momento in cui i rettangoli vengono aggiunti tot mise, uno per uno, o dopo che tutti i rettangoli sono stati aggiunti. Potrebbe essere più facile farlo mentre i rettangoli vengono aggiunti, poiché è necessario considerare solo un rettangolo, ma è comunque necessario tenere conto della situazione in cui un singolo rettangolo si sovrappone a più altri rettangoli.
Bella soluzione - Penso che la "rettangolazione" possa essere la via da seguire. – Thomi
Grazie - la svolta per me era pensare al problema come a una griglia di celle: una volta ottenuto ciò, è facile inviare rettangoli che si trovano solo nella griglia. – Thomi