Introduzione
Fin dai primi giorni dell'informatica, un campo noto per il suo approccio metodico alla risoluzione dei problemi, la casualità ha svolto un ruolo importante. Il primo programma eseguito sul primo computer elettronico generico al mondo ha utilizzato la casualità per simulare i processi nucleari. Da allora approcci simili sono stati utilizzati in astrofisica, scienza del clima ed economia. In tutti questi casi, collegando numeri casuali in determinate fasi dell'algoritmo aiuta i ricercatori a tenere conto dell'incertezza sui molti modi in cui possono svolgersi processi complessi.
Ma l'aggiunta di casualità in un algoritmo può anche aiutarti a calcolare la risposta corretta a domande non ambigue vero o falso. "Dici solo 'OK, lasciami arrendere, non farmi provare, lasciami scegliere qualcosa a caso'", ha detto Eric Blais, un informatico dell'Università di Waterloo. "Per troppi problemi, questo finisce per essere un approccio di successo."
Supponiamo che tu voglia determinare se un dato numero è primo (divisibile solo per 1 e se stesso) o composto (divisibile anche per altri numeri interi). Potresti semplicemente provare a dividerlo per tutti i possibili fattori, ma per grandi numeri questo metodo di "forza bruta" e altri algoritmi di fattorizzazione sono terribilmente lenti. E se il numero risulta essere composto, gli algoritmi di fattorizzazione ti dicono i valori dei suoi divisori: più informazioni di quelle che hai chiesto. Se ti interessa solo la "primalità" di un numero, esiste un algoritmo più efficiente?
C'è se usi la casualità. L'idea di base risale a un risultato del matematico francese del XVII secolo Pierre de Fermat, noto come il suo "piccolo teorema.” Fermat considerò due numeri interi: chiamali N ed x. Ha dimostrato che se N è un numero primo, quindi xN - x è sempre un multiplo di N, indipendentemente dal valore di x. Equivalentemente, se xN - x non è un multiplo di N, poi N non può essere un numero primo. Ma l'affermazione inversa non è sempre vera: If xN - x è un multiplo di N, poi N di solito, ma non sempre, è primo.
Per trasformare il piccolo teorema di Fermat in un test di primalità, basta prendere il N che ti interessa, scegli x a caso, e inserire i due numeri in xN - x. Se il risultato non è un multiplo di N, allora hai finito: lo sai N è decisamente composito. Se il risultato è un multiplo di N, poi N è probabilmente primo. Ora scegli un altro casuale x e prova ancora. Nella maggior parte dei casi, dopo qualche decina di tentativi, puoi concludere con quasi certezza che N è un numero primo. "Lo fai un piccolo numero di volte", ha detto Blais, "e in qualche modo ora la tua probabilità di avere un errore è inferiore alla probabilità che un asteroide colpisca la Terra da ora a quando guardi la risposta."
Il primo primalità test utilizzando algoritmi randomizzati (basati su perfezionamenti al piccolo teorema di Fermat) ha inaugurato una nuova era. Problema dopo problema si è rivelato molto più facile da risolvere con la casualità che con algoritmi non casuali o deterministici. La chiave era riformulare ogni problema come uno che potesse essere risolto rapidamente dato un valore appropriato per un certo numero x, e quindi dimostrare che praticamente qualsiasi x farebbe. La soluzione funziona anche se i ricercatori non hanno idea di come determinare se una scelta specifica sia buona. I matematici hanno scherzato dicendo che questa insolita sfida è simile a trovare il fieno in un pagliaio.
Ma questi successi hanno indotto i ricercatori a chiedersi perché la casualità dovrebbe aiutare con problemi come i test di primalità, che riguardano la ricerca di schemi nascosti e non casuali. "C'è qualcosa di un po' paradossale a riguardo", ha detto Rahul Santhanam, un informatico dell'Università di Oxford. "La pura casualità ti aiuta a capire la struttura che risolve il problema."
Nel 1994, gli informatici Noam Nisan e Avi Wigderson ha contribuito a risolvere questa confusione dimostrando che la casualità, sebbene utile, probabilmente non è necessaria. Essi dimostrato che una delle due cose deve essere vera: o tutti i problemi che possono essere risolti in modo efficiente usando la casualità hanno anche algoritmi deterministici veloci, oppure molti problemi notoriamente difficili sono segretamente facili. Gli informatici considerano la seconda possibilità molto improbabile.
In effetti, gli informatici spesso trovano più facile sviluppare un algoritmo deterministico partendo da una versione randomizzata e poi "de-randomizzandola". "Una volta che ce l'ho, improvvisamente vedo un modo molto ovvio per renderlo deterministico", ha detto Eli Upfal, un informatico della Brown University. "Ma se non ci pensassi in modo casuale come una domanda probabilistica, probabilmente non ci penserei."
Quasi 30 anni dopo la prova fondamentale di Nisan e Wigderson, gli algoritmi randomizzati rimangono più popolari che mai, perché la de-randomizzazione può essere complicata e gli algoritmi deterministici sono spesso efficienti solo in linea di principio. Non è stato fino al 2002 che tre ricercatori hanno trovato un modo per de-randomizzare i test di primalità, e in pratica il loro algoritmo è molto più lento dei migliori algoritmi randomizzati. Per altri problemi, è difficile persino sapere da dove cominciare: l'algoritmo più noto ha un problema dell'uovo e della gallina a cui puoi sfuggire solo attraverso la casualità.
Questo è il caso di una recente svolta nella teoria dei grafi. L'anno scorso, tre scienziati informatici si sono sviluppati un algoritmo veloce per trovare il percorso più breve attraverso un grafico - una rete di nodi collegati da segmenti di linea - che funziona anche quando alcuni segmenti si sottraggono dalla lunghezza totale del percorso anziché aggiungerla. Il loro algoritmo prevedeva la trasformazione del grafico in uno più semplice eliminando alcuni segmenti, risolvendo il problema per il grafico semplificato e quindi tenendo conto dei segmenti eliminati. Potrebbero dimostrare che l'algoritmo funzionerebbe rapidamente se nessun percorso più breve passa attraverso troppi segmenti eliminati, altrimenti l'ultimo passaggio richiederebbe troppo tempo.
Ma come decidere quali segmenti eliminare in primo luogo? Non è solo difficile trovare l'insieme ideale di segmenti in modo deterministico, è impossibile. L'insieme dipende da quali percorsi sono più brevi, proprio il problema che i tre ricercatori stavano cercando di risolvere. Ma anche se non sono riusciti a trovare il miglior set di segmenti da eliminare, hanno potuto dimostrare che la maggior parte delle scelte casuali sarebbe stata piuttosto buona, e questo è stato sufficiente per interrompere il ciclo autoreferenziale. Nei rari casi in cui l'algoritmo compie una scelta sfortunata e si blocca all'ultimo passaggio, potrebbero semplicemente interrompersi ed eseguirlo di nuovo.
"La casualità è fondamentalmente un modo per garantire che qualcosa sia vero sulla soluzione ottimale senza conoscere la soluzione ottimale", ha affermato Aaron Bernstein, uno degli autori del nuovo algoritmo.
La casualità ha trovato innumerevoli altri usi nell'informatica, dalla crittografia alla teoria dei giochi all'apprendimento automatico. È probabile che sia qui per restare.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- Platoblockchain. Web3 Metaverse Intelligence. Conoscenza amplificata. Accedi qui.
- Fonte: https://www.quantamagazine.org/how-randomness-improves-algorithms-20230403/
- :È
- ][P
- $ SU
- 1
- 1994
- a
- Chi siamo
- a proposito
- AC
- Il mio account
- Contabilità
- Dopo shavasana, sedersi in silenzio; saluti;
- algoritmo
- Algoritmi
- Tutti
- sempre
- ed
- Un altro
- rispondere
- approccio
- approcci
- opportuno
- SONO
- AS
- Asteroide
- At
- gli autori
- precedente
- basato
- basic
- fondamentalmente
- BE
- perché
- iniziare
- essendo
- MIGLIORE
- fra
- Po
- impantanato
- Rompere
- sfondamento
- by
- calcolare
- chiamata
- Materiale
- che
- Custodie
- casi
- certo
- certezza
- Challenge
- probabilità
- scegliere
- scelte
- Scegli
- Clima
- complesso
- computer
- Informatica
- concludere
- confusione
- collegato
- Prendere in considerazione
- considerato
- potuto
- crittografia
- Giorni
- decide
- decisamente
- dimostrando
- dipende
- Determinare
- sviluppare
- sviluppato
- difficile
- giù
- dozzina
- ogni
- terra
- più facile
- Economia
- efficiente
- in modo efficiente
- o
- Elettronico
- finisce
- abbastanza
- garantire
- epoca
- errore
- Anche
- EVER
- Fattori
- FAST
- pochi
- campo
- Trovare
- ricerca
- Nome
- Nel
- essere trovato
- Francese
- da
- gioco
- scopo generale
- ottenere
- Dare
- dato
- va
- buono
- grafico
- maniglia
- Hard
- Avere
- avendo
- Aiuto
- aiutato
- aiutare
- aiuta
- qui
- nascosto
- colpire
- Come
- Tutorial
- HTTPS
- i
- idea
- ideale
- importante
- impossibile
- in
- informazioni
- interessato
- coinvolto
- IT
- SUO
- stessa
- jpg
- Le
- Sapere
- Conoscere
- conosciuto
- punto di riferimento
- grandi
- Cognome
- L'anno scorso
- apprendimento
- Lunghezza
- piace
- linea
- piccolo
- Lunghi
- Guarda
- macchina
- machine learning
- fatto
- make
- FA
- molti
- matematica
- metodo
- metodico
- Scopri di più
- più efficiente
- maggior parte
- multiplo
- Vicino
- necessaria
- New
- nodi
- nucleare
- numero
- numeri
- ovvio
- of
- on
- ONE
- ottimale
- Altro
- altrimenti
- Oxford
- Passato
- sentiero
- modelli
- scegliere
- Pierre
- posto
- Platone
- Platone Data Intelligence
- PlatoneDati
- Giocare
- giocato
- spina
- Popolare
- possibilità
- possibile
- pratica
- piuttosto
- premio
- principio
- probabilmente
- Problema
- problem-solving
- problemi
- i processi
- Programma
- prova
- Dimostra
- dimostrato
- Quantamagazine
- domanda
- Domande
- rapidamente
- casuale
- Randomizzato
- casualità
- RARO
- piuttosto
- recente
- Indipendentemente
- rimanere
- ricercatori
- colpevole
- Ruolo
- Correre
- Suddetto
- Scienze
- Scienziato
- scienziati
- Secondo
- segmenti
- set
- dovrebbero
- siam
- simile
- semplificata
- semplicemente
- da
- rallentare
- piccole
- soluzione
- RISOLVERE
- risolve
- Soluzione
- alcuni
- qualcosa
- specifico
- Di partenza
- dichiarazione
- soggiorno
- step
- Passi
- Fermare
- La struttura
- di successo
- Fai
- test
- Testing
- che
- I
- Il grafo
- loro
- Li
- Strumenti Bowman per analizzare le seguenti finiture:
- cose
- tre
- Attraverso
- volte
- a
- pure
- Totale
- trasformazione
- vero
- TURNO
- Turned
- Incertezza
- Università
- Università di Oxford
- uso
- generalmente
- APPREZZIAMO
- Valori
- versione
- Modo..
- modi
- sito web
- se
- quale
- con
- senza
- lavori
- Il mondo di
- sarebbe
- anno
- anni
- Tu
- Trasferimento da aeroporto a Sharm
- zefiro