Wolfram Mathematica per la teoria dei grafi

Documenti analoghi
MATRICE TUNING competenze versus unità didattiche, Corso di Laurea in Informatica (classe L-31), Università degli Studi di Cagliari

Introduzione a Matlab

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione

Vettori Matrici Grafi Introduzione al Fuzzy-tool. Renato Mainetti

INTRODUZIONE A R. Dott. Giuseppe Sgroi Dipartimento di Matematica e Informatica 29 Maggio 2019

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Università degli Studi di Napoli Federico II CdL Ing. Elettrica Corso di Laboratorio di Circuiti Elettrici

Vettori Matrici Grafi. Renato Mainetti

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Scilab. Introduzione a Scilab - Vettori. Corso di Informatica CdL: Chimica. Claudia d'amato.

R - Esercitazione 1. Andrea Fasulo 7 Ottobre Università Roma Tre

MATLAB - Introduzione. Antonino Polimeno

Introduzione a MATLAB

Strutture dati e loro organizzazione. Gabriella Trucco

Laboratorio 1 Strumenti quantitativi per la gestione

Introduzione a Matlab

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Laboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici

Introduzione ai Grafi di LEDA

Indice Capitolo 1 Capitolo 2 Capitolo 3 Capitolo 4 Capitolo 5 Capitolo 6

Matlab: Script e Funzioni

Esercitazione 1: Introduzione a MATLAB

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Introduzione alla programmazione A. Ferrari

Università Roma Tre - PAS Classe A048 "Matematica Applicata" - Corso di Informatica a.a. 2013/2014

1) Matlab e simulazione. 2) Esempi di utilizzo. Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata

1 Introduzione. 1.2 Area di lavoro e comandi

Informatica 3. LEZIONE 9: Introduzione ai linguaggi funzionali. Modulo 1: Introduzione ai linguaggi funzionali Modulo 2: LISP

Marco Liverani PROGRAMMARE IN C. Guida al linguaggio attraverso esercizi svolti e commentati

Introduzione alla programmazione. Alice Pavarani

INTRODUZIONE A MATLAB. Introduzione. Calcolatrice base. Calcolatrice base. Variabili predefinite o speciali. Variabili predefinite o speciali

Liste. Università degli Studi di Milano

AUTOMA A STATI FINITI

Problemi di ottimizzazione combinatoria ed algoritmi per il physical mapping del DNA

Simulazione di sistemi non lineari Introduzione a Stateflow

I S T I T U T O T E C N I C O I N D U S T R I A L E S T A T A L E

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

CAPITOLO 3 - ALGORITMI E CODIFICA

Scheme: liste e vettori

Mathcad Prime 3.0. Guida al curriculum

Fondamenti di di A utomatica Automatica Prof. Bruno Picasso Introduzione all all uso di di S imulink Simulink

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 3-15/3/2018

Problem solving elementare su dati scalari

Introduzione. Corso di Metodi Numerici. 06 Marzo 2019

Esercitazione 00 Introduzione a Matlab

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Javascript: il browser

Java e i Tipi di dati primitivi. Parte 3

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008

A.A. 2018/2019. AlgoBuild: Introduzione agli Array FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Fondamenti di Informatica

Introduzione a C# Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

algoritmi e strutture di dati

Guida a Mathematica. Parte prima. Le funzioni. Come è strutturato Mathematica. Sintassi. Operatori aritmetici. Sin x. Out 1. commento. a b.

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 3

Javascript: il browser

LAB LEZ. 1 STATISTICA DESCRITTIVA CON R

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

Università degli Studi di Ferrara

Tutorato di Fondamenti di Informatica TUTOR: DAVIDE GHIANI, GIULIA ORRU

Il primo programma C++

Corso di PHP. Prerequisiti. 5 Funzioni

I DATABASE CREAZIONE DI UNA RUBRICA: Definiamo i campi della tabella. ID Cognome Nome Etc.

Tecnologie informatiche multimediali

Introduzione a MATLAB

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Elementi di Base. Introduzione a Python.

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

TIPO DI DATO ASTRATTO

PON Liceo Scientifico Leonardo da Vinci Vallo della Lucania Nuovi percorsi matematici: Osservare, descrivere, costruire.

Reti Complesse Biologiche

Algoritmi stabili e instabili

Calcolo Numerico I - A.A Laboratorio 3

MATLAB c Utilizzo di Matlab. Operazioni fondamentali. Elementi di grafica.

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Informatica 7. appunti dalle lezioni del 20 e 22/10/2010

FONDAMENTI DI SEGNALI E TRASMISSIONE 1 Laboratorio

Risoluzione di un problema

>> A = [1 2 3; 4 5 6; 7 8 9]; >> A

Istituto di Istruzione Superiorevia Salvini 24 Roma Liceo M. Azzarita Liceo delle scienze applicate Materia:Informatica Programmazione a.s.

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Venturino Taggi

L assegnamento. Andrea Marin. a.a. 2011/2012. Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time

Università degli Studi di Napoli Federico II CdL Ing. Elettrica Corso di Laboratorio di Circuiti Elettrici

Problema: conteggio occorrenze

x t = M t a.

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Il linguaggio R Un invito ad approfondire

Programmazione in Java (I modulo)

Prefazione. 0 Programmare per calcolare 1. I Programmazione di base in linguaggio C 5

Transcript:

Wolfram Mathematica per la teoria dei grafi Un introduzione all uso di Mathematica Marco Liverani Corso IN0 Ottimizzazione Combinatoria http://www.mat.uniroma.it/users/liverani/in0/ Wolfram Mathematica È un software di calcolo numerico e simbolico, dotato di una gamma molto vasta di librerie per quasi ogni branca della Matematica, tra cui anche la matematica discreta, la teoria dei grafi e la combinatoria su insiemi finiti Il linguaggio di Mathematica adotta il paradigma dei linguaggi di programmazione funzionali È piuttosto costoso, ma è disponibile una convenzione tra Wolfram e l università Roma Tre per consentire agli studenti di acquisire una licenza gratuitamente: http://asi.uniroma.it/page.php?page=convenzio

Introduzione Mathematica presenta un prompt e un interfaccia testuale con cui impartire comandi al sistema; i comandi devono essere completati con la sequenza Shift + Enter L output dei comandi viene visualizzato nella stessa finestra di input, come in una lavagna elettronica interattiva In[]:= + Out[] = In[]:= +; In[]:= % Out[] = I calcoli vengono rappresentati in forma simbolica, a meno di non richiedere esplicitamente il calcolo di un risultato numerico (eventualmente approssimato) In[]:= / Out[] = / In[]:=./ Out[] =. In[]:= N[/] Out[] = 0. In[]:= N[/, 0] Out[] = 0. Help on-line e funzioni È disponibile un help on-line con le istruzioni per l uso dei comandi del linguaggio; è possibile richiamare l help per una funzione specifica con l operatore «?» In[]:=?Sqrt Out[] = Sqrt[z] gives the square root of z. More... Gli argomenti delle funzioni si indicano tra parentesi quadrate; le funzioni hanno tutte l iniziale maiuscola: In[]:= Cos[π] Out[] = - L operatore «=» consente di assegnare un valore ad una variabile; l operatore «:=» consente invece di definire una funzione In[]:= y = x Out[] = 0 In[]:= z:=x In[]:= x = x Out[] = 0 In[]:= y Out[] = 0 In[]:= z Out[] = 0

Definizione di funzioni I parametri formali di una funzione, nella sua definizione, si indicano con un simbolo di underscore dopo il nome della variabile: In[]:= f[x_, k_] := x^ + k x In[]:= f[,] Out[] = È possibile visualizzare grafici di funzione e di superficie con le funzioni Plot e PlotD: In[]:= f[x_] := Sin[x]/x In[]:= Plot[f[x], {x, -0, }] Out[]=.0 0. In[]:= f[x_, y_] := Sin[Sqrt[x^ + y^]]/sqrt[x^ + y^] In[] = PlotD[f[x, y], {x, -, }, {y, -, }, PlotRange -> {-0., }] Out[]= 0. 0. 0. -0-0 -0. Liste, array e insiemi Le parentesi graffe devono essere utilizzate per definire liste di elementi Mathematica non distingue tra liste e vettori o array: gli elementi hanno una «posizione» nella lista e sono identificati da un numero progressivo (a partire da ) Le matrici sono definite come liste di liste La funzione Part serve a restituire un elemento o una parte di un vettore o di una matrice, mentre la funzione Length restituisce la lunghezza (il numero di elementi) di una lista In[]:= x = {,,,, } Out[] = {,,,, } In[]:= m = {{,, }, {,, }, {,, }} Out[] = {{,, }, {,, }, {,, }} In[]:= Part[m,,] Out[] = In[]:= Length[x] Out[] =

Operazioni su insiemi Mathematica dispone di funzioni per le operazioni elementari sugli insiemi: In[]:= Union[{,, }, {,, }] Out[]= {,,,, } In[]:= Intersection[{,, }, {,,, }] Out[]= {, } In[]:= Complement[{,, }, {,, }] Out[]= {, } Sono disponibili anche funzioni per operazioni combinatorie su insiemi finiti: In[]:= Permutations[{,, }] Out[]= {{,, }, {,, }, {,, }, {,, }, {,, }, {,,}} In[]:= Permute[{"a", "b", "c"}, {,, }] Out[]= {"b", "a", "c"} In[]:= Subsets[{,, }] Out[]= {{}, {}, {}, {}, {, }, {, }, {, }, {,, }} In[]:= Subsets[{,, }, ] Out[]= {{}, {}, {}, {}, {, }, {, }, {, }} In[]:= Subsets[{,, }, {}] Out[]= {{, }, {, }, {, }} Creazione di grafi È possibile costruire e rappresentare graficamente grafi e alberi Per creare un grafo si deve utilizzare la funzione Graph specificando l insieme dei vertici e degli spigoli In[]:= G = Graph[{,,,,, }, { <->, <->, <->, <->, <->, <-> }] Il grafo è orientato o non orientato a seconda della modalità con cui si specificano gli spigoli: u<->v : non orientato u->v : orientato da u a v

Creazione di grafi Si possono anche utilizzare funzioni per creare grafi casuali o sulla base di specifici parametri: In[]:= G = CompleteGraph[] In[]:= G = CompleteGraph[{,, }] In[]:= G = RandomGraph{,} 0 È possibile modificare i grafi con le funzioni VertexAdd, EdgeAdd, VertexDelete, EdgeDelete: In[]:= G = CompleteGraph[, VertexLabell->All] In[]:= G=VertexAdd[G, {, }] In[]:= G=EdgeAdd[G, {<->, <->, <->}] In[]:= G=VertexDelete[G, {, }] In[]:= G=EdgeDelete[G, {<->}] Proprietà del grafo È possibile verificare se il grafo possiede o meno determinate proprietà; le funzioni di Mathematica che termino con la lettera «Q» (query) sono funzioni booleane che restituiscono True o False: In[]:= G=RandomGraph[{0,}, VertexLabels->All] In[]:= AcyclicGraphQ[G] Out[]= False In[]:= HamiltonianGraphQ[G] In[]:= CompleteGraphQ[G] Out[]= False Out[]= False In[]:= EulerianGraphQ[G] In[]:= ConnectedGraphQ[G] Out[]= False Out[]= True In[]:= PlanarGraphQ[G] Out[]= False 0 È possibile estrarre anche semplici informazioni sul grafo: In[]:= EdgeCount[G] Out[]= In[]:= VertexCount[G] Out[]= 0 In[]:= VertexDegree[G] Out[]= {,,,,,,,,, } In[]:= TableForm[AdjacencyMatrix[G]] Out[]= 0 0 0 0 0 0 0 0 0

Operazioni sui grafi È possibile ricavare alcuni sottografi attraverso operazioni di visita del grafo stesso: In[]:= G=RandomGraph[{0,}, VertexLabels->Automatic] In[]:= HighlightGraph[G, FindSpanningTree[G]] Out[]= 0 Out[]= In[]:= FindSpanningTree[G, VertexLabels -> Automatic] In[]:= HighlightGraph[G, FindCycle[G]] Out[]= 0 Out[]= 0 Operazioni sui grafi È possibile ricavare alcuni sottografi attraverso operazioni di visita del grafo stesso: In[]:= G = RandomGraph[{0, }] In[]:= HighlightGraph[G, TreeGraph[VertexList[G], BreadthFirstScan[G]]] Out[]= 0 Out[]= In[]:= HighlightGraph[G, FindClique[G]] In[]:= HighlightGraph[G, TreeGraph[VertexList[G], DepthFirstScan[G]]] Out[]= 0 Out[]=

Altre informazioni e riferimenti Dispense del corso IN0 Ottimizzazione combinatoria (Mathematica ver. 0 con pacchetto «Combinatorica»): http://www.mat.uniroma.it/users/liverani/doc/disp_oc_0.pdf Wolfram Language & System Documentation Center Graphs & Networks: https://reference.wolfram.com/language/guide/graphsandnetworks.html