2010-07-12 42 views
85

In particolare l'ho visto utilizzato nel contesto del filtro del testo. Come se "predicato" == "criteri di filtro".Cosa significa "predicato" nel contesto dell'informatica?

È accurato?

+0

Suoni come 'predicate' è un mix di 2 parole,' pre' e quant'altro, suggerendo che è relativo al controllo di qualcosa prima di fare qualcos'altro. Il problema è che non ho trovato nulla su cui costruire la mia ipotesi. Comunque, può essere un bel suggerimento sul significato :) –

risposta

71

È un termine più comunemente usato nel campo della logica matematica.

Da wikipedia

In matematica, un predicato o è un rapporto o la funzione a valore booleano che equivale alla funzione caratteristica o la funzione indicatore di tale rapporto.

Una funzione P: X → {true, false} viene chiamato un predicato sulla X. Quando P è un predicato su X, a volte diciamo P è una proprietà di X.

.

"predicato" == "criteri di filtro"

+0

Vorrei cambiare "in qualche misura" a "esattamente lo stesso", poiché si può filtrare un elemento o meno, il che implica una funzione booleana, cioè un predicato. –

+4

Questo è usato in informatica, sia in teoria che in pratica di programmazione. Un predicato come funzione che ottiene un argomento e restituisce un valore booleano. restituisce true se l'argomento * corrisponde al predicato * vale a dire la funzione nome-filtro. Esempio: isBlue (arg), qui Interfaccia predicato Java -> https://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html –

35

La parola deriva dalla logica.

Un predicato è una domanda "booleana" sugli input.

"IsNull" è una domanda di predicato.

Inoltre, collegamento wikipedia su Predicates in Math.

12

Un predicato è una dichiarazione di qualcosa che è vero o falso.

+0

@ user1907906 Il "vorrei descrivere" parte è semplicemente fluff, ma il resto costituisce certamente una risposta. Non c'è richiesta di critica o chiarimento qui. – EJP

81

Un predicato ('PRED-i-cat') è la parte di una frase che contiene il verbo e ti dice qualcosa sull'argomento.

Per esempio, nella frase

"Mike sta mangiando", abbiamo il soggetto, 'Mike', e il predicato, 'sta mangiando'.

Nel contesto dell'informatica, non siamo interessati ad affermare un fatto, ma piuttosto a testare una condizione vero/falso allo scopo di decidere se fare qualcosa.

Person mike; 

if (!mike.isEating()) 
    feedPerson(mike); 

La isEating() membro di mike (un'istanza di Person) è un predicato. Restituisce true o false per l'asserzione che il person (mike in questo caso) sta mangiando. Il predicato viene utilizzato per decidere se nutrire o meno la persona.

I predicati si trovano spesso sotto forma di callback, ma in generale è possibile utilizzare il termine per qualsiasi funzione che restituisce un valore booleano basato sulla valutazione della verità di un'asserzione.

Per l'ordinamento, potrebbe voler avere la funzione di membro

bool Fruit::ComesAfter(Fruit x) ... 

come il nostro predicato. Se x viene dopo di noi, il nostro algoritmo di ordinamento scambierà i due frutti.

C'è anche il termine predicato (predi-KATE). In inglese lo usiamo in questo modo:

"La laurea è basata sul conseguimento di voti di passaggio".

Significa che una cosa dipende da un'altra.

In informatica, utilizziamo questa forma della parola per descrivere l'esecuzione condizionale.

Ad esempio, nella programmazione CUDA, esistono istruzioni di assemblaggio di cui è possibile prevedere l'esecuzione (KATE) su un risultato precedente. Cioè, si imposta un flag di predicato (CAT) che, se è vero, fa sì che l'istruzione venga eseguita, e se falso, l'istruzione viene trattata come un NOP. Pertanto l'esecuzione dell'istruzione è basata sulla bandiera del predicato indicata.

Gli usi sono molto simili.

Spero che questo aiuti.

+9

IMO, questa è la migliore risposta –

+0

Mi piace davvero molto il modo in cui hai spiegato questo. –

4

Enunciato:

  • sia sicuramente impostato su vero o falso
  • non dipende valori dei parametri
  • esempio
    • "x + 2 = 2x, quando x = -2" => true
    • "2 * 2 = 5" => false

Predicate:

  • il valore di verità dipende dal valore del parametro
  • es.
    • => valore di verità "x + 2 = 2x" è sconosciuta e dipende dal valore di x

Utilizzare quantificatori per trasformare predicato proposizione:

  • ∃ x ∈ Z (x + 2 = 2x) "Esiste l'ascia nell'insieme di numeri interi tale che x + 2 = 2x"
3

Solo per semplificare le cose. Il predicato è una funzione che restituisce un valore vero o falso.

utilizzato come "criterio di filtro" che significa: consente di considerare una matrice di numeri e predicato che restituisce true se numero> 0, falso altro saggio.

function predicate(number){ 
    return number > 0 
} 
// array of numbers 
var numbers = [-2 , -1 , 0 , 1 , 2]; 

var newNumbers = numbers.filter(predicate); 

// newNumbers => [1 , 2] ; 

filter è una funzione che restituisce un nuovo array basato su un predicato (o un "criterio di filtro".)

ha filtrato l'array basato sul valore di predicato

  • vero: includono valore
  • falso: non comprendono che
1

predicato è una funzione che prende un elemento come parametro di input e restituisce true o false. I predicati vengono utilizzati in funzioni di ordine superiore, applicati a una determinata funzione (a.k.a trasformatore) in base a un elenco di elementi e restituiscono un elenco di risultati. Il trasformatore è una funzione che si applica a ciascun elemento e produrrà uno o più elementi nuovi.

Problemi correlati