* Insiemi ** Numeri naturali I numeri naturali sono i numeri appartenenti all'insieme dei numeri naturali ℕ, ovvero tutti i numeri maggiori o uguali a 0. Possiamo definire i numeri naturali utilizzando la rappresenzationa di Von Neumann: - definifiamo la funzione /successore(n)/ come: | successore(n) = n ∪ {n} - 0 = ∅ - 1 = 0 ∪ {0} = {∅} - 2 = 1 ∪ {1} = {0, 1} - 3 = 2 ∪ {2} = {0, 1, 2} - n = n-1 ∪ {n-1} = {0, 1, 2, ..., n-1} ** Numeri interi I numeri interi sono i numeri appartenenti all'insieme dei numeri interi ℤ, ovvero tutti i numeri il cui valore assoluto e` un numero naturale. Possiamo rappresentare intuitivamente l'insieme dei numeri interi ℤ come {n | ∃(a,b) ∈ ℕ×ℕ, n = a-b} ** Numeri razionali I numeri razionali sono i numeri appartenenti all'insieme dei numeri razionali ℤ, ovvero tutti i numeri rappresentabili tramite un numero razionale o come il limite di una sequenza di numeri razionali che non si ripete e non termina (numeri irrazionali). ** Intersezione L'intersezione fra due insiemi e` a sua volta un insieme contenente gli elementi in comune fra i due insiemi: | A∩B = {x | x∈A ∧ x∈B} ** Unione L'unione fra due insiemi e` a sua volta un insieme contenente gli elementi dei due insiemi: | A∩B = {x | x∈A ∨ x∈B} ** Differenza La differenza fra due insiemi e` a sua volta un insieme contenente tutti gli elementi presenti nell'insieme a sinistra della differenza ma non non contenuti nell'insieme a destra: | A \\ B = {x | x∈A ∧ x∉B} ** Insieme Potenza L'insieme potenza di un insieme S, ℘(S), anche detto power set di S e` l'insieme che contiene tutti i sottoinsiemi di S. ** Complemento di un insieme Il complemento di un insieme e` a sua volta un insieme che contiene tutti gli elementi che non appartengono all'insieme di partenza: | Aᶜ = {a | a∉A} ** Insieme contenuto Un insieme A si dice contenuto in B se tutti gli elementi di A sono a loro volta elementi di B: | A⊆B iff ∀a∈A, a∈B ** Insieme strettamente contenuto Un insieme A si dice strettamente contenuto in B se tutti gli elementi di A sono a loro volta elementi di B ma ci sono degli elementi di B che non appartengono ad A: | A⊂B iff (∀a∈A, a∈B) ∧ (∃b∈B | b∉A) ** Prodotto Cartesiano Il prodotto cartesiano di due insiemi e` un insieme contenente tutte le coppie ordinate di cui il primo elemento appartiene al primo insieme ed il secondo elemento al secondo insieme: | A × B = {(a, b) | a∈A ∧ b∈B} ** Arieta` n Si definisce arietà di una relazione R il numero di insiemi a cui si applica quella relazione. Se una relazione ha arietà n: | R ⊆ A₁×A₂×...×Aₙ ** Relazione binaria Si definisce una relazione R binaria quando R ha arieta` 2: | R ⊆ A₁×A₂ ** Proprieta` riflessiva Considerato un insieme A e una relazione R, diciamo che R e` una relazione riflessiva se: | ∀a∈A, aRa ** Proprieta` simmetrica Considerato un insieme A e una relazione binaria R, diciamo che R e` una relazione simmetrica se: | ∀a,b∈A, aRb ⇔ bRa ** Proprieta` transitiva Considerato un insieme A e una relazione binaria R, diciamo che R e` una relazione transitiva se: | ∀a,b,c∈A, aRb ∧ bRc → aRc ** Relazione di equivalenza Una relazione binaria che e` allo stesso tempo riflessiva, simmetrica e transitiva si dice relazione d'equivalenza. ** Chiusura transitiva Considerato un insieme A e una relazione binaria R, definiamo chiusura transitiva la piu` piccola relazione transitiva R⁺ sull'insieme A che contiene R: | R⊆R⁺ ∧ (∀T, R⊆T → R⁺⊆T (R⁺ is minimal)) Se la relazione R e` transitiva, allora R=R⁺ ** Funzione Definiamo funzione una relazione fra due insiemi A e B che associa un elemento dell'insieme A ad esattamente un elemento dell'insieme B: | f: X↦Y ** Funzione di arieta` n Possiamo definire una funzione di arieta` n su un insieme S come: | f: Sⁿ↦S ** Funzione iniettiva Una funzione f: X↦Y si dice iniettiva quando presi due elementi dell'insieme X, se la loro immagine e` uguale (f(x)), allora i due elementi sono uguali: | ∀x,x'∈X, f(x) = f(x') → x = x' ** Funzione suriettiva Una funzione f: X↦Y si dice suriettiva quando preso qualunque elemento di Y, questo ha una controimmagine x in X: | ∀y∈Y, ∃x∈X| f(x) = y ** Funzione biettiva Chiamiamo una funzione biettiva quando e` allo stesso tempo iniettiva e suriettiva. * Linguaggi ** Alfabeto Un alfabeto e` un insieme i cui membri sono simboli (che includono lettere, caratteri e numeri). Se L e` un linguaggio formale, ossia un set finito o infinito di stringhe di finita lunghezza, allora l'alfabeto di L, indicato con Σ, e` l'insieme di tutti i simboli che possono comparire in una qualunque stringa di L. ** Stringa Una stringa e` una sequenza finita di simboli di un alfabeto. ** Lettera Una lettera di una string e` un simbolo dell'alfabeto. ** Stringa vuota Una stringa vuota e` una stringa di lunghezza zero, anche detta ε. ** Concatenazione La concatenazione di stringhe e` l'operazione di unione dei caratteri di due stringhe preservando il loro ordine. ** Ripetizione Si dice ripetizione l'operazione di concatenazione di una stringa con n copie di se` stessa. ** Prefisso Si dice prefisso di una stringa la sottostringa che appare all'inizio della stringa. ** Suffisso Si dice suffisso di una stringa la sottostringa che appare alla fine della stringa. * Grafi Un grafo e` una coppia ordinata G = (V,E) che comprende un insieme V di vertici e un insieme E di coppie (e,v). ** Grafo diretto Un grafo diretto e` un grafo in cui gli archi hanno orientamento. ** Grafo indiretto Un grafo indiretto o semplice e` un grafo in cui gli archi non hanno orientamento, ovvero: | ∀x,y∈V, (x,y) = (y,x) ** Grafo bipartito Un grafo si dice bipartito quando l'insieme di vertici V può essere diviso in due insiemi disgiunti e indipendenti W e X, di modo che ogni arco connetta un vertice in W con un vertice in X e si scrive G = (W,X,E): | V = W∪X ∧ W∩X = ∅ ** Nodo sorgente Un nodo si dice sorgente quando il numero di archi in ingresso e` 0. ** Nodo destinazione Un nodo si dice destinazione quando il numero di archi in uscita e` 0. ** Funzione di etichettatura per archi e nodi In un generico grafo G, e` possibile definire funzioni di etichettatura o di colorazione dei nodi come, dato un insieme di etichette S: | f: V↦S Definendo un insieme di ** Cammino Si dice cammino una sequenza di archi che collega una sequenza di vertici distinti. ** Ciclo Si definisce ciclo un cammino in cui il primo e l'ultimo vertice coincidono mentre tutti gli altri vertici si ripetono al piu` una volta. ** Lunghezza del cammino Si definisce lunghezza il numero di archi che compongono un cammino. In un grafo pesato la lunghezza di un cammino e` costituita dalla somma del peso di ogni arco che lo compone. Un cammino in un grafo e` una sequenza finita o infinita di archi che collegano una sequenza di vertici distinti l'uno dall'altro. Un cammino di lunghezza $k$ e` rappresentato da una sequenza alternata di $k$ vertici ed archi.\\ $v_0,e_0,v_1,e_1,\,...\,v_{k-1},e_{k-1},v_k$ ** Grafi fortemente connesso Un grafo diretto si dice fortemente connesso se ogni vertice e` raggiungibile da ogni altro vertice. ** Componenti fortemente connesse Si dicono componenti fortemente connesse le partizioni di un grafo diretto che sono fortemente connesse. ** BSCC - Bottom Strongly Connected Component Una componente fortemente connessa si dice BSCC quando nessun vertice al di fuori della BSCC e` raggiungibile. ** Albero Si dice albero un grafo indiretto in cui ogni coppia di vertici e` connessa da solo un arco. Ogni grafo indiretto, connesso e aciclico e` un albero. ** In e out degree di un nodo Si dice in degree, /indeg⁻(v)/, di un nodo il numero di archi entranti in quel nodo. Si dice out degree, /outdeg⁺(v)/, di un nodo il numero di archi uscenti da quel nodo. * Matrice Una matrice e` un vettore bidimensionale di numeri o altri oggetti. La dimensione n×m e` data dal numero di righe /n/ e il numero di colonne /m/. \begin{equation*} \begin{pmatrix} a_{1,1} & a_{1,2} & \cdots & a_{1,m} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,m} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n,1} & a_{n,2} & \cdots & p_{n,m} \\ \end{pmatrix} = (a_{ij})\in{R^{m\times{n}}} \end{equation*} ** Somma La somma A+B di due matrici A, B e` definito come: | (A+B)_{ij} = A_{ij}+B_{ij} ** Prodotto Definiamo il prodotto scalare di una matrice A per un fattore /c/ come: | (cA_{ij}) = c·A_{ij} Definiamo il prodotto fra una matrice A di dimensione |nₐ×mₐ| e una matrice B di dimensione |n_{b}×m_{b}| quando mₐ=n_{b} come: | AB_{ij} = ∑_{r=1}^{n} a_{ir}b_{rj} Dato un vettore $\vec{v}$ possiamo calcolare il prodotto di vettore per matrice considerando il vettore una matrice colonna e applicando lo stessa definizione del prodotto fra matrici (quindi la lunghezza di $\vec{x}$ dovra` essere pari al numero di colonne della matrice).