Congruenza fogli di mappa - Un caso concreto (di Roberto Rena)

Direi ottima pazienza…

Ciao Gianni ti mando via mail la cartella del lavoro che stavo ancora analizzando questa mattina.
Mi sono accorto che ci sono un paio di cose che non mi quadrano:
lanciando il calcolo combinatorio e cambiando il numero di punti minimi da considerare, aggiornando i dati il tempo previsto rimane a 0 e il numero di combinazioni fornisce un valore troppo basso.
Esempio con 25 punti totali e un minimo di 9 da mantenere visualizza un totale di sole 276 combinazioni (e credo che le faccia veramente in tempo 0) lanciando il calcolo comunque funziona regolarmente anche se non posso sapere quanto dura…
Finito il calcolo, scremando i valori di variazione di scala fino a 50cm, vettore di scarto fino a 40cm e delta fino a 50cm, le combinazioni che seleziona mentre vanno bene per varazione di scala e scarto medio non vanno bene per il delta in quanto restituisce valori da 59 a 76cm quando io avevo imposto il massimo a 50cm.
Ti preciso che preventivamente al calcolo combinatorio ho impostato nella tabella della RTB il trigonometrico come CS
Aspetto tue notizie, grazie per la pazienza

Ciao Roberto,
hai ragione, ero già consapevole dei difetti che hai segnalto, solo che a causa del corso di mercoledì non ho più avuto il tempo di correggerli tutti e due. Infatti quello della ricerca delle combinazioni imponendo il range di valori l’avevo già sistemato. Era dovuto al fatto che il parametro del delta l’avevo introdotto solo di recente e non lo avevo ancora incluso nella ricerca. Scaricati l’aggiornamento n. 45 e vedrai che questo problema è risolto (come del resto avrai visto al corso).

Per quanto riguarda invece il calcolo del numero di combinazioni, e la conseguente stima del tempo, sto letteralmente impazzendo. Mai mi sarei aspettato, nel 2021, di imbattermi in un limite strutturale dei computer attuali. Cerco di spiegartelo, anche se è una questione puramente matematica.
Allora, come hai visto al corso di mercoledì, il calcolo delle possibili combinazioni tra n numeri presi in numero parziale di k è dato dalla formula:

image

Dove il ! significa il fattoriale di un numero, vale a dire il prodotto di tutti i numeri da 1 fino al numero stesso. Bene, non ci crederai, ma anche nei computer attuali il calcolo del fattoriale è possibile fino al numero 20, dal fattoriale di 21 il computer, da solo, non ce la fa più. Succede infatti quanto segue:

  • Nei computer i numeri interi sono rappresentati da celle di memoria di 64 bit (cioè numeri binari composti solo da 0 e 1). Con 64 bit il massimo numero che si riesce a comporre è:
    image

  • Il fattoriale di 20 è:
    image
    che è quindi minore di:
    image

  • mente il fattoriale di 21 è:
    image
    che, come vedi, supera il limite di cui sopra.

Morale, nel calcolare il fattoriale di numeri da 21 in su il computer dà risultati sballati, cioè numeri molto piccoli anziché molto grandi perché va fuori dai 64 bit disponibili. Naturalmente c’è modo di ovviare al problema con un’opportuna routine di programmazione, ma è una cosa da perderci la testa … e infatti ci sto passando notti insonni. Ma conto di riuscirci già la settimana entrante.

Il problema del tempo stimato che rimane a zero è la conseguenza dell’anomalia di cui sopra. Se utilizzi da 20 punti in giù, vedrai che anche il tempo si assesta. Naturalmente, come ti dicevo al telefono, la stima del tempo l’avrai solo dopo che avrai concluso un primo calcolo combinatorio perché da quel primo calcolo (e poi da tutti i successivi) Geocat ha modo di determinare il tempo medio che il tuo computer ci mette ad elaborare.

Ciao Roberto,
dopo alcune notti in bianco e un bel po’ di mal di testa, sono riuscito a risolvere il problema del calcolo fattoriale che ti spiegavo qui sopra. Scaricati l’aggiornamento 47 e leggi la mia relazione qui:

IMPORTANTE - Geocat 47 - Riconfinazioni, calcolo combinatorio - integrazioni e migliorie

Adesso se clicchi Aggiorna sul tuo esempio G471-F3M14-INT.db, con 25 punti di inquadramento imponendone 9 più minimo uno spigolo dei fabbricati A, B, J, il numero di combinazioni viene calcolato correttamente (16.241.061 con le migliaia spaziate), così come il tempo stimato per l’elaborazione (nel mio computer pari a 15h 15m 43s, quindi da lanciare nel fine settimana :slight_smile: ):

Appena hai la possibilità, fai qualche prova e fammi sapere se ti torna il tutto.