Ho una matrice sparsa che contiene diverse isole di dimensioni sconosciute. Mi piacerebbe trovare il picco più alto di ogni isola. Prendi in considerazione questa matrice come esempio:
0 0 1 0 0 0 0
0 0 1 2 1 0 0
0 0 0 3 2 1 0
0 1 0 0 0 0 0
0 2 3 4 0 1 0
0 0 1 1 0 1 0
0 0 0 0 0 1 0
In questo caso mi piacerebbe ottenere la posizione di 3 a (3, 2), la posizione di 4 a (3, 4) e la posizione di 1 a (5, 4), (5, 5) o (5, 6). Nota: considero i vicini collegati a 4.
Fino ad ora mi è venuta in mente la soluzione che analizza ogni pixel e, se non è zero, avvia un riempimento flood da quel pixel. Il riempimento dell'inondazione dipinge i pixel a zero tenendo traccia del valore massimo visitato. Questo algoritmo funziona bene, ma mi chiedevo se ci sono soluzioni più veloci?
Nella mia piattaforma di destinazione (iOS) ho accesso a diversi framework di elaborazione vettoriale come BLAS, LAPACK, vDSP che forniscono alcune funzioni per trovare rapidamente il valore massimo in un vettore (o una matrice). Forse si potrebbe implementare una soluzione più veloce con l'aiuto di queste funzioni?