È "un processo generale per risolvere una categoria di problemi" la giusta definizione di un algoritmo?

1

Sto leggendo Think Python: Come pensare come uno scienziato informatico , l'autore dice che un algoritmo è:

A general process for solving a category of problems.

Ma non so se sia una definizione corretta di un algoritmo. Non è un algoritmo volto a risolvere un problema specifico [trovare se un numero è pari o dispari, ad esempio]?

Nota: sono un hobbista e un principiante.

    
posta Mahmud Muhammad Naguib 06.05.2016 - 14:40
fonte

5 risposte

4

Un processo generale è qualcosa che funziona su diversi input.

Prendendo esempio di pari o dispari.

Se controllo se il numero inserito è 1, emette un risultato dispari. Questo non è un processo generale. Funziona solo su un input molto specifico.

Se invece controllo il modulo 2 dell'input avrò un processo generale poiché funzionerebbe su tutti i numeri interi come input. Questo è un algoritmo.

Ma risolve solo un problema non una categoria completa?

Beh, una categoria di problemi può essere un singolo problema o un gruppo di problemi. Non c'è davvero una ragione per usare un termine diverso per qualcosa che risolva un problema e non una categoria di problemi.

    
risposta data 06.05.2016 - 15:05
fonte
3

Penso che le definizioni di Wikipedia e Encyclopedia of Mathematics per l'algoritmo siano buoni complementi l'una per l'altra.

“Detailed instructions defining a computational process (which is then said to be algorithmic), which begins with an arbitrary input (out of a certain number of inputs which are possible for the given algorithm), and with instructions aimed at obtaining a result (or output) which is fully determined by the input.”

link

“In mathematics and computer science, an algorithm is a self-contained step-by-step set of operations to be performed. Algorithms perform calculation, data processing, and/or automated reasoning tasks.”

link

Metaforicamente, un algoritmo è come un metodo per cuocere una torta specifica. La quantità di ingredienti (input) può variare, cambiando così la dimensione della torta (output). Tuttavia, il metodo di preparazione dell'impasto è lo stesso, è l'insieme di passaggi seguiti per combinare gli ingredienti per preparare l'impasto.

    
risposta data 06.05.2016 - 18:37
fonte
1

Questa è una categoria di problemi:

  • "Ordina una sequenza di numeri interi".

Questi sono problemi specifici di quella categoria:

  • "Ordina la sequenza [4, 3, 1, 8] ".
  • "Ordina la sequenza [1] ".
  • "Ordina la sequenza [] ".

La parola categoria significa solo che alcuni dettagli sono variabili e quindi ci sono in realtà molti (possibili infiniti) problemi specifici che il processo potrebbe risolvere.

    
risposta data 06.05.2016 - 17:41
fonte
1

Non è necessariamente la definizione "sbagliata", ma non è molto utile. Termini come generali e specifici (e categoria) sono classificazioni relative. Quindi, gettarli in una definizione senza contesto o ulteriore qualifica non ci dice molto.

Una definizione migliore sarebbe semplicemente: Una serie di passaggi per risolvere un problema.

Da lì, se una serie di passaggi risolve un problema, è un algoritmo. Se capisci che il problema è un problema generale, allora è un algoritmo generale. Se lo vedi come un problema specifico, è un algoritmo specifico.

Se mettiamo il tuo esempio nello spettro passando da piuttosto specifico a piuttosto generale , potrebbe sembrare qualcosa come questo:

-- MORE SPECIFIC -- 

> Classify the number '1' as *Even* or *Odd*
> Classify a number 'N' as *Even* or *Odd*
> Classify a number 'N'
> Classify something 'O'

-- MORE GENERAL -- 

Potresti trovare diverse generalizzazioni, si spera migliori.

È certamente possibile creare un algoritmo per risolvere uno di questi problemi. E puoi probabilmente chiamare uno qualsiasi dei problemi generali o specifici per soddisfare le tue esigenze. Ma, probabilmente, l'autore intende dire, se l'algoritmo non risolve il problema in generale come viene presentato, non è un algoritmo significativo.

    
risposta data 06.05.2016 - 18:40
fonte
0

Michiedoanchesepossiamodefinirel'algoritmosolointerminidifunzioni.Unalgoritmoèmoltosimileaunafunzione.L'esempiosemplicestaeseguendolamoltiplicazioneusandol'addizione(3*4=4volte3=4volte(+3)=+3+3+3+3=12.)

Èimportanteridurreunproblemaaunaltro,comesivedecheabbiamofattoriducendolamultiplazioneall'aggiuntaconunalgoritmo(unafunzione).

Unacategoriaimportanteèd problemi di ecision dove si tratta di una domanda con risposta sì o no.

    
risposta data 06.05.2016 - 16:36
fonte

Leggi altre domande sui tag