Un algoritmo sulla forma delle matrici

« Older   Newer »
  Share  
view post Posted on 26/1/2016, 11:44     +1   +1   -1
Avatar

Esperto

Group:
Moderatori
Posts:
993
Reputation:
+177

Status:


Sto cercando, qualora fosse possibile, di descrivere un algoritmo da trasformare in un programma.

L’intento è quello di riuscire a convertire una matrice nella sua forma più concisa (dal punto di vista dell’ordine dei numeri scelti nella propria struttura) senza naturalmente alterare le garanzie.

Intanto ho appurato che qualsiasi matrice può sempre essere riscritta utilizzando, come prima riga, la successione naturale dei numeri da 1 a K.

Infatti perché iniziare a scrivere una matrice così:
01 02 08 09 12 13 15 18 21 23
01 04 05 06 07 15 16 18 19 20
…ecc…

quando invece possiamo iniziare così:
01 02 03 04 05 06 07 08 09 10 < - - (i primi k numeri in ordine da 1 a k)
01 02 03 11 12 13 14 15 16 17
…ecc…

Ora, ho anche visto che una simile trasformazione è applicabile anche al resto del corpo delle matrici (non solo alla prima riga).

Ciò che non riesco ad ottenere è un algoritmo che presa una matrice restituisca la sua forma canonica in maniera univoca (cioè, anche alterando la matrice di partenza in diversi modi vorrei poter ricavare sempre la stessa forma rappresentativa).

Uno strumento capace di far questo potrebbe essere utile per diversi scopi:
- Stabilire se due matrici apparentemente diverse, sono in fondo la stessa cosa.
- Fornire ai vari programmi di ottimizzazione della copertura una base di partenza differente (forse)
- Permettere al sistemista di leggere in maniera più semplice i passi chiave della matrice in esame
- Consentire un utilizzo più efficiente delle matrici in applicazioni diverse dalle lotterie (ad esempio circuiti elettronici)


Qualcuno saprebbe consigliarmi qualche argomento a riguardo che potrei approfondire o, meglio ancora, fornirmi utili suggerimenti per poter proseguire?


Allego alcuni esempi di matrici originali e relative matrici corrispondenti riscritte con questo criterio.

Stefano

Download attachment
esempi_matrici.rar ( Number of downloads: 35 )

 
Top
view post Posted on 28/1/2016, 17:43     +1   -1
Avatar

Esperto

Group:
Moderatori
Posts:
993
Reputation:
+177

Status:


Chi mi aiuta con degli esempi ?

Mi basta un sistema, senza neanche conoscere né le garanzie né i numeri di cui è composto
e ve lo restituisco modificato nella forma descritta nel post sopra.
Non solo!! Dovrei riuscire, senza errore, a evidenziare le sottomatrici, se il sistema è stato fatto per somma.

Nell'esempio qui sotto ho costruito (appositamente solo per fare una prova) un 42, 5, 2, 5
e poi l'ho riordinato e disassemblato come vedete a destra (gli asterischi indicano l'inizio di una nuova sottomatrice utilizzata per la somma).

   ORIGINALE  MODIFICATO
20 25 26 28 29**** 01 02 03 04 05
33 36 37 39 4201 06 07 08 09
01 06 07 08 0902 03 04 06 07
21 23 25 29 3002 03 04 08 09
35 38 39 40 4105 06 07 08 09
10 12 13 15 19**** 10 11 12 13 14
11 12 14 15 1710 11 15 16 17
11 13 17 18 1910 12 15 18 19
22 24 25 27 2911 13 16 18 19
31 33 37 40 4112 14 16 17 18
10 11 13 14 1613 14 15 17 19
34 35 38 40 41**** 20 21 22 23 24
20 22 23 27 3020 21 22 25 26
31 33 34 36 4220 27 28 29 30
31 32 34 37 3921 22 23 27 28
32 33 35 37 3821 22 24 29 30
32 36 40 41 4223 25 26 29 30
21 22 26 27 2824 25 26 27 28
02 03 04 06 07**** 31 32 33 34 35
10 12 16 17 1831 32 36 37 38
02 03 04 08 0931 33 36 39 40
14 15 16 18 1931 37 38 41 42
31 35 36 38 4232 39 40 41 42
01 02 03 04 0533 34 36 41 42
23 24 26 28 3033 35 36 37 38
05 06 07 08 0934 37 38 39 40
20 21 23 24 3035 39 40 41 42


Devo capire se uno strumento così potrebbe rivelarsi utile.
Aspetto i vostri sistemi... (anche difficili da decifrare!)
 
Top
icon1  view post Posted on 20/2/2016, 11:27     +1   -1
Avatar

Esperto

Group:
Administrator
Posts:
4,949
Reputation:
+230
Location:
Bari

Status:


:lol: Fantastico, alcuni anni fà DeCervo aveva segnalato di aver fatto anche lui un software
che facesse il lavoro che fai anche tu con questo tuo programma, serviva per sgamare i copioni .

:lol: bellissimo lavoro, così si possono lavorare solo le sotto sezioni
(cosa che credo facciano i software brasileri et similia)
e cercare di migliorare il record di per sè, bravo Stefano :D ^_^
 
Top
view post Posted on 20/2/2016, 11:50     +1   -1
Avatar

Esperto

Group:
Moderatori
Posts:
993
Reputation:
+177

Status:


CITAZIONE (TarulliG @ 20/2/2016, 11:27) 
:lol: Fantastico, alcuni anni fà DeCervo aveva segnalato di aver fatto anche lui un software
che facesse il lavoro che fai anche tu con questo tuo programma, serviva per sgamare i copioni .

:lol: bellissimo lavoro, così si possono lavorare solo le sotto sezioni
(cosa che credo facciano i software brasileri et similia)
e cercare di migliorare il record di per sè, bravo Stefano :D ^_^

Grazie Gianni,

Metto qui in allegato il programma che come vedi è in fase sperimentale (si può completare inserendo comodi tasti di selezione dei files, migliorare la grafica che indica l'avanzamento ecc... ).
Prima di dedicarmi alle migliorie estetiche vorrei perfezionare il meccanismo interno...
Se qualcuno ha voglia di vederlo assieme a me sono convinto che si arriverà a qualcosa di molto utile...

Allego anche tutte le matrici dei record del 20,10,7,10 (aggiornate alle ultimissime di Kabila) con le rispettive trasformazioni fatte con questo programma.

ci tengo a precisare che, secondo me, la forma che si ottien con questo algoritmo è la più semplice in termini di ordinamento dei numeri scelti, ma forse mi sbaglio..

Ciao,
Stefano

Download attachment
Programma_e_altri_esempi.rar ( Number of downloads: 72 )

 
Top
Nino …..
view post Posted on 20/2/2016, 12:28     +1   -1




Interessante!

L'utilità per i sistemi somma è chiara, un po' meno quella per gli altri.

Ad esempio, il mio 45,10,7,11 = 18.144 qui allegato è certamente migliorabile, forse se hai voglia di metterlo in ordine... :)

Ciao
Nino

Download attachment
11071001814445.7z ( Number of downloads: 37 )

 
Top
view post Posted on 20/2/2016, 12:50     +1   -1
Avatar

Esperto

Group:
Moderatori
Posts:
993
Reputation:
+177

Status:


CITAZIONE (Nino ….. @ 20/2/2016, 12:28) 
Interessante!

L'utilità per i sistemi somma è chiara, un po' meno quella per gli altri.

Ad esempio, il mio 45,10,7,11 = 18.144 qui allegato è certamente migliorabile, forse se hai voglia di metterlo in ordine... :)

Ciao
Nino

E che ci vuole! Eccolo trasformato senza alterare né garanzia né numero di colonne

ma funziona in tempi ragionevoli anche per sistemi più voluminosi. Per il sistema di nino da 112000 colonne (di cui qui) servono appena 5 minuti ...

Download attachment
1107100181444_canonico.txt ( Number of downloads: 31 )

 
Top
Nino …..
view post Posted on 20/2/2016, 13:48     +1   -1




CITAZIONE (stef72 @ 20/2/2016, 12:50) 
E che ci vuole! Eccolo trasformato senza alterare né garanzia né numero di colonne

OK, ma non mi pare che si capisca il metodo usato per costruirlo, né riesco ad intuire come migliorarlo (senza eventuale apposito software)

OCCHIO!!!! Mi sono accorto che c'è qualcosa che non va nello sviluppo del mio 45,10,7,11 (ci sono differenze troppo elevate nella presenza di alcuni numeri).
Provo a rifarlo...

Nino

Adesso il 45,10,7,11 è a posto. Avevo sbagliato come al solito in un copia-incolla... :unsure:
Però è formato da 18189 decine, alcune delle quali sono ripetute e non ho trovato il programma per eliminarle.
Stefano, avevi fatto questa utility insieme all'inverso, preparala per favore da sola! E' utile avere un programmino che una volta inserite le colonne, permette di salvare solo quelle diverse!
Ad esempio, il WUC non fa questo controllo preliminare.

Edited by Nino ….. - 20/2/2016, 14:50

Download attachment
11071001818945.rar ( Number of downloads: 20 )

 
Top
view post Posted on 20/2/2016, 17:47     +1   -1
Avatar

Esperto

Group:
Moderatori
Posts:
993
Reputation:
+177

Status:


CITAZIONE (Nino ….. @ 20/2/2016, 13:48) 
...
Stefano, avevi fatto questa utility insieme all'inverso, preparala per favore da sola! E' utile avere un programmino che una volta inserite le colonne, permette di salvare solo quelle diverse!
Ad esempio, il WUC non fa questo controllo preliminare.

Ok, Nino faccio una utility che prende un sistema e verifica se ci sono righe con gli stessi numeri e nel caso propone se elencarli ed eliminarli.

Penso che l'interfaccia sarà più o meno come quella nella figura seguente http://i64.tinypic.com/16jd44.jpg

(Uff! hanno cambiato il modo di caricare le immagini e di inserire le miniature..)



Visto che non potrò iniziare a lavorarci prima di domattina, se nel frattempo ti vengono idee che si possono inglobare nello stesso programma non esitare a comunicarmelo, così inizio col passo giusto...

In ogni caso ho esaminato il file e in effetti sono resenti 3 combinazioni ripetute (ciascuna 2 volte).
Allego il file senza le doppie e, a parte, le righe ripetute che ho eliminato.

Stefano.

Per quanto riguarda ill programmino Canonical, come puro esempio, vi invito a leggere e rivedere questo thread

https://wheels.forumcommunity.net/?t=56626055

e poi ad analizzare voi stessi il sistema di Weefs 90,10,3,10 = 67

e dirmi quante matrici riesce a riconoscere il programmino. Sono 2 (come si dice nella discussione) oppure 3?
Chi sono i veri autori delle basi del sistema?



Senza nulla togliere al Prof. Di Guida (il quale ha scelto la risposta più concisa per soddisfare la richiesta), non si può negare che il 90,10,3,10 = 67 è stato ottenuto come somma dei seguenti sistemi:

40,10,3,5 = 29 (Weefs - Alessandro Jurcovic)
+
22,10,3,3 = 19 (La Jolla)
+
28,10,3,4 = 19 (Weefs - Kinski)




Quindi ViniciusAlves in questo caso ha un ruolo secondario direi, in quanto ha costruito il 50,10,3,6=38 come somma di altre matrici.

Ecco, cercare di fare queste osservazioni a colpo d'occhio mi sembra fatica sprecata..!

Comunque, quanto sopra è solo un esempio di applicazione pratica dell'algoritmo, diversa dalla semplice trasformazione della matrice.

Il funzionamento è semplice.
Si deve pensare ai numeri che entrano in gioco come se fossero delle etichette incollate sopra degli oggetti.
Gli oggetti sono stati disposti in maniera opportuna (al fine di offrire la migliore garanzia del sistema),
ma si possono scambiare le etichette incollate sopra gli oggetti senza alterare l'ordine degli oggetti...
Perciò potremo avere gli oggetti disposti nell'ordine iniziale, ma anche le etichette potranno essere seguire un ordinamento stabilito.

Pensiamo a delle automobili ben parcheggiate di fronte ad una fabbrica...
Se scambiamo le targhe delle automobili e le mettiamo in ordine dalla più piccola alla più grande...
Quando usciamo dal lavoro troviamo la nostra auto sempre lì dove l'avevamo parcheggiata :)

Download attachment
Tre_duplicati_trovati.rar ( Number of downloads: 31 )

 
Top
Nino …..
view post Posted on 20/2/2016, 18:07     +1   -1




CITAZIONE (stef72 @ 20/2/2016, 17:32) 
Ok, Nino faccio una utility che prende un sistema e verifica se ci sono righe con gli stessi numeri e nel caso propone se elencarli ed eliminarli.

Perfetto, grazie. :)

CITAZIONE (stef72 @ 20/2/2016, 17:32) 
Visto che non potrò iniziare a lavorarci prima di domattina, se nel frattempo ti vengono idee che si possono inglobare nello stesso programma non esitare a comunicarmelo, così inizio col passo giusto...

Certo che sì... ^_^
Il programma dovrebbe chiedere anche un numero: questo sarà il numero più alto del maggior numero di colonne possibili nell'ambito del sistema.

Ho capito, mi sono spiegato malissimo :lol:
Supponiamo di avere lo sviluppo rilevabile da La Jolla del 30,10,7,7 = 36056
Voglio vedere quante sono le colonne che hanno come numero massimo (tra i 10 numeri della colonna) es. il 20.
Senza spostamenti (inversioni tra i numeri) queste colonne siano ad esempio 100.
A questo punto, il programma fa le prove necessarie, sostituendo i vari numeri, fino ad avere, ad esempio, 150 colonne contenenti come numero più alto il numero 20.

Capisco che non è semplice avere il massimo, ci si potrebbe accontentare interrompendo la ricerca quando si desidera.

CITAZIONE (stef72 @ 20/2/2016, 17:32) 
In ogni caso ho esaminato il file e in effetti sono resenti 3 combinazioni ripetute (ciascuna 2 volte).
Allego il file senza le doppie e, a parte, le righe ripetute che ho eliminato.

Stefano.

Infatti, avevo visto anch'io che le ripetizioni sono solo 3.
Se fosse disponibile l'utility spiegata prima, le colonne ripetute e quindi eliminabili potrebbero essere ben di più (e quindi lo sviluppo finale molto minore)

Nino
 
Top
view post Posted on 21/2/2016, 10:20     +1   -1
Avatar

Esperto

Group:
Moderatori
Posts:
993
Reputation:
+177

Status:


CITAZIONE (Nino ….. @ 20/2/2016, 18:07) 
Il programma dovrebbe chiedere anche un numero: questo sarà il numero più alto del maggior numero di colonne possibili nell'ambito del sistema.

Ho capito, mi sono spiegato malissimo :lol:
Supponiamo di avere lo sviluppo rilevabile da La Jolla del 30,10,7,7 = 36056
Voglio vedere quante sono le colonne che hanno come numero massimo (tra i 10 numeri della colonna) es. il 20.
Senza spostamenti (inversioni tra i numeri) queste colonne siano ad esempio 100.
A questo punto, il programma fa le prove necessarie, sostituendo i vari numeri, fino ad avere, ad esempio, 150 colonne contenenti come numero più alto il numero 20.

Capisco che non è semplice avere il massimo, ci si potrebbe accontentare interrompendo la ricerca quando si desidera.

Ho quasi capito :)
Nel senso che se prendo il file da La Jolla 30,10,7,7 = 36056 cerco le combinazioni che hanno 20 come estratto più grande e ne trovo 383.
Ma poi non capisco cosa deve fare il programma...deve sostituire colonne al file originale? :unsure:

Allego il file excel della matrice di la jolla con in evidenza le righe dell'esempio, così, se serve, ci capiamo meglio.
Stefano

Download attachment
30_10_7_7___36056_LJ.rar ( Number of downloads: 19 )

 
Top
Nino …..
view post Posted on 21/2/2016, 12:30     +1   -1




CITAZIONE (stef72 @ 21/2/2016, 10:20) 
Ho quasi capito :)
Nel senso che se prendo il file da La Jolla 30,10,7,7 = 36056 cerco le combinazioni che hanno 20 come estratto più grande e ne trovo 383.

OK


CITAZIONE (stef72 @ 21/2/2016, 10:20) 
Ma poi non capisco cosa deve fare il programma...deve sostituire colonne al file originale? :unsure:

Allego il file excel della matrice di la jolla con in evidenza le righe dell'esempio, così, se serve, ci capiamo meglio.
Stefano

Sì, il programma deve provare (a tentativi?) l'inversione dei segni, in modo che rifacendo i conti (come hai fatto con il file excel) le combinazioni che hanno (nel caso in esame) 20 come estratto più grande siano più di 383 (l'obiettivo è trovare il massimo possibile)

Questo potrebbe essere fatto sostituendo, ad es. un numero per volta:
l'1 con il 2 e viceversa
l'1 con il 3 e viceversa
..... ecc...
(n*(n-1)/2 tentativi)

poi con due numeri per volta:
l'1 e il 2 con il 3 e il 4
l'1 e il 2 con il 3 e il 5
------ ecc...
(n*(n-1)/2 * (n-2)*(n-3)/2 tentativi)

non so se sia fattibile proseguire, i tentativi diventano sempre di più...

oppure si possono fare sostituzioni random (ma qui non posso essere di nessun aiuto...)

Nino
 
Top
view post Posted on 21/2/2016, 13:57     +1   -1
Avatar

Esperto

Group:
Moderatori
Posts:
993
Reputation:
+177

Status:


Nino, se ho capito bene è una cosa che ho già cercato di fare, ma non è semplice (per me)
Mi pare sia uno dei meccanismi cardine su cui si basa il WG...
Forse per questo discorso sarebbe meglio aprire una nuova discussione ad hoc (anche considerando che si allontana molto dalla semplice ricerca di doppioni in un file).

Prendiamo un altro esempio con meno colonne...E che magari può anche portare a qualche bel risultato :B):

In allegato ho messo:
file 1) <26 colonne -1536 Renzo Dal Bianco Riordinato.txt>
il 20,10,7,10 = 26 combinazioni di Renzo Dal Bianco (versione riordinata, ma non cambia nulla per questo discorso e puoi rifare lo stesso esempio, se vuoi, con la versione originale)
file 2) <Sistema Bitstring.txt>
La rappresentazione della matrice caratteristica di quel sistema (in formato .txt, è un file con 20 colonne dove c'è 1 se il numero appare nella combinazione, 0 altrimenti).
file 3) <Sistema Bitstring.xls>
una volta ottenuto il file della matrice caratteristica diventa facile importarlo in excel per tirare le somme come ho fatto io (vedi file.xls). Basta dire che i campi sono delimitati da "spazio" quando importi il file .txt
file 4) <BitString.exe>
Per costruire la matrice caratteristica ho usato questa piccola utility anch'essa allegata (mi son deciso a farne un programmino perchè ero stanco di tradurre a mano...)


Ok, a questo punto, dal file excel si vede bene che il sistema NON CONTIENE 13 ricorrenze di ogni numero, che è quello che mi pare si voglia cercare di fare...
Ma resta il problema: come scambiare i numeri?
In altre parole: quale algoritmo si dovrebbe applicare cercando oltretutto di non 'produrre' nessuna combinazione ripetuta ?

Mi rimane il dubbio di non aver ancora afferrato bene ciò che intendevi inizialmente,
ma sono queste le difficoltà che non sono riuscito a superare nel mio intento e mi pare sia la stessa cosa che mi stai chiedendo.

Stefano

Download attachment
BitString.rar ( Number of downloads: 38 )

 
Top
Nino …..
view post Posted on 21/2/2016, 15:58     +1   -1




Non mi pare che stiamo dicendo la stessa cosa.
Io non ho chiaro lo scopo della tua ricerca delle asimmetrie nella presenza dei numeri che costituiscono lo sviluppo dei sistemi (da tempo ho fatto un semplice foglio excel che fa questo lavoro, che mi è utile nella scelta delle soluzioni più succinte per costruire alcuni sistemi somma, vedi allegato)

Io invece cercavo semplicemente un mezzo per manipolare lo sviluppo colonnare di un riduttore (che potrebbe servire come sezione parziale), in modo da segmentarlo secondo un criterio che delimita un minimo e un massimo numerico.
So che ordinare gli elementi delle colonne in modo da ottenere questo è complicato e, forse, neppure utilissimo, salvo casi particolari; per il momento, direi di soprassedere e di accontentarci dell'eliminazione dei duplicati.

Ciao
Nino

Download attachment
Num_presenti_nel_sistema.xls ( Number of downloads: 27 )

 
Top
view post Posted on 22/2/2016, 18:28     +1   -1
Avatar

Esperto

Group:
Moderatori
Posts:
993
Reputation:
+177

Status:


Ecco il programma per cercare le combinazioni ripetute.

Esistono diversi software gratuiti che fanno un lavoro simile in un batter d'occhio. Però...in alcuni casi sbagliano.

Nel seguente esempio infatti è in grado di riconoscere quattro doppioni da scartare (mentre i comuni software per eliminare i duplicati vedono cinque righe diverse):

01 02 03 04 05 06 07 08 09 10 <-- prima ricorrenza
01,02,03,04,05,06,07,08,09,10 <-- stessa combinazione con le virgole
01.02.03.04.05.06.07.08.09.10 <-- stessa combinazione con i punti
1 2 3 4 5 6 7 8 9 10 <--------- stessa combinazione senza zeri
01 03 02 04 05 06 07 08 09 10 <-- stessa combinazione con due numeri permutati

Probabilmente salterà fuori qualche difetto che non ho notato, nel caso gradirei che me lo faceste sapere.
Stefano

PS= ecco, infatti dopo un bel po' di tempo (perché l'ho usato poco) mi sono accorto di un difetto: il programma funzionava bene nei casi come le matrici, dove è presente il numero 1 seguito dagli altri numeri in gioco. Ma nei casi di ricerca in combinazioni che non comprendono il numero 1, cioè che comprendono numeri di un intervallo come ad esempio 2,4,6,8,10,18 allora dava errore e non funzionava.
Perciò rimuovo questo allegato e ricarico il programma modificato alla fine di questa discussione da dove sarà possibile scaricarlo anche

cliccando qui



Stefano

Edited by stef72 - 26/6/2016, 22:15
 
Top
view post Posted on 22/2/2016, 21:29     +1   -1

Esperto

Group:
Moderatori
Posts:
2,311
Reputation:
+147
Location:
Veneto

Status:


Ciao Stefano
sto provando il programma "canonical"ma ogni volta che inserisco un
sistema con copia-incolla in "sistema originale"e clicco su Elabora
mi esce questo errore :Run-time error"53": File not found
ho provato in tutti i modi ma da sempre il solito errore.
sicuramente sbaglio qualcosa mi puoi indicare la procedura esatta
Grazie Renzo.
Ps . il cercadoppioni sembra funzionare
 
Top
27 replies since 26/1/2016, 11:44   960 views
  Share