• Non ci sono risultati.

Fondamenti di Programmazione con Laboratorio CdL in MATEMATICA I Appello 24 Gennaio 2019

N/A
N/A
Protected

Academic year: 2022

Condividi "Fondamenti di Programmazione con Laboratorio CdL in MATEMATICA I Appello 24 Gennaio 2019"

Copied!
1
0
0

Testo completo

(1)

Fondamenti di Programmazione con Laboratorio CdL in MATEMATICA

I Appello 24 Gennaio 2019

N.B.: Negli esercizi di programmazione, vengono valutati anche l’uso dei costrutti appropriati, l’uso delle condizioni booleane, la leggibilit`a e l’efficienza del codice proposto. Inoltre, non `e consentito l’uso di variabili globali o di variabili statiche. Laddove `e utilizzato, il tipo boolean `e definito da typedef enum {false, true} boolean.

ESERCIZIO 1

Sia L il linguaggio regolare su Σ = {1, 2, 3} tale che le stringhe w di L:

• cominciano sempre per 1

• non contengono mai le sequenze 21, 22, 31, 33;

• finiscono sempre per 3.

Si forniscano allora:

• l’automa a stati finiti non deterministico A in grado di riconoscere L;

• la corrispondente espressione regolare, applicando l’algoritmo di eliminazione degli stati all’automa A;

• la corrispondente grammatica regolare, usando l’algoritmo per passare dalle transizioni dell’automa alle produzioni della grammatica.

ESERCIZIO 2

Dire se i seguenti linguaggi sono regolari o liberi dal contesto, giustificando la risposta e usando, se necessario, il pumping lemma per i linguaggi regolari e il pumping lemma per i linguaggi liberi.

• L1= {0i1j2j3i|i ≥ 1, j ≥ 1}

• L2= {0i1j2i3j|i ≥ 1, j ≥ 1}

ESERCIZIO 3

Un vettore (contenente elementi di un insieme su cui `e definita una nozione di ordinamento) `e detto unimodulare se ha tutti valori distinti ed esiste un indice h tale che A[0] > A[1] > ... > A[h − 1] > A[h] e A[h] < A[h + 1] <

A[h + 2] < ... < A[n − 1], dove n `e la dimensione del vettore.

Si scriva in C una funzione ricorsiva (non occorre scrivere il main) che, dato un vettore unimodulare A di n interi, e dati il suo primo e ultimo indice, restituisca il valore minimo del vettore.

La complessit`a in tempo dell’algoritmo deve essere O(log n).

ESERCIZIO 4

• Si descriva a parole, in non pi`u di 10 righe, il funzionamento dell’algoritmo MERGESORT, oppure se ne scriva il codice omettendo quello della funzione MERGE che pu`o essere descritta a parole in non pi`u di 4 righe.

• Si scriva di conseguenza la relazione di ricorrenza che descrive la complessit`a in tempo di MERGESORT.

* Se ne indichi la soluzione, motivando la risposta usando uno qualsiasi dei metodi visti a lezione.

ESERCIZIO 5

Dato un linguaggio L si definisce prefix (L) = {w|∃x t.c. wx ∈ L}. Notare che x pu`o essere . Ad esempio, se L = {01, 101} allora prefix (L) = {, 0, 01, 1, 10, 101}.

Dimostrare che se L `e un qualsiasi linguaggio regolare, allora prefix (L) `e regolare. (Partire da un DFA per L e costruire un DFA per prefix (L)).

Riferimenti

Documenti correlati

Si scriva un programma in linguaggio C che riceva sulla linea di comando il nome del file contenente il dizionario dei sinonimi, il nome del file contenente il testo originale e

Primo appello di Laboratorio di Matematica.. 6

Per dimostrare la tesi basta verificare che due coefficienti adiacenti di P non possono essere

Primo appello di Laboratorio di Matematica.. 14

Definire poi i metodi che restituiscono i valori delle variabili istanza, un metodo per modificare il curatore delle note, un metodo che inserisce una tipologia nell’elenco di

Inoltre, definire un metodo che modifica il numero di abitanti, un metodo che modifica il nome del sindaco ed un metodo che, dato un intero k &gt; 0, restituisce true se un comune

Definire inoltre un metodo che modifica la presenza di pile nel giocattolo ed un metodo che restituisce una stringa che descrive un oggetto della classe GiocattoloPile.

Un estremo dell’asta `e incernierato nel baricentro B del disco; l’altro estremo `e vincolato a scivolare sulla guida circolare (si assume 2ℓ &lt; 2R − r). Assumendo che sul punto