Sie sind auf Seite 1von 3

Algorithms and Data Structures

Goals:
This teaching is intended to illustrate the main techniques of algorithm design and
describe and analyze the most common basic algorithms and data structures used in
them, with particular reference to aspects of computational complexity.
Scientific-disciplinary sector:
ING-INF/05.
Credits:
12.
Module:
Unique.
Duration:
Annual, 120 hours (72 lecture + 48 tutorial).
Frequency:
There are no attendance requirements.
Professor:
Ing Valerio Freschi.
Program:
01. Introduction to algorithms and data structures:
01.01 Algorithms and their types.
1.2 Correctness of an algorithm than a problem.
1.3 Complexity of an algorithm over the use of resources.
1.4 Data structures and their types.

02. Classes of problems:


02:01 decidable and undecidable problems.
02:02 tractable and intractable problems.
2:03 Cook's Theorem.
2.4 NP-completeness.

03. Complexity of algorithms:


3:1 notations to express the asymptotic complexity.
3.2 Calculation of the complexity of recursive algorithms.
3.3 Calculation of the complexity of recursive algorithms.

04. Algorithms for arrays:


1.4 Array: basic definitions and classical problems.
Algorithm 2.4 visits for arrays.
4.3 Search algorithm for linear arrays.
04:04 binary search algorithm for sorted arrays.
5.4 Criteria for comparison sorting algorithms for arrays.
04:06 Insertsort.
04:07 Selectsort.
4:08 bubble.
04:09 mergesort.
04:10 quicksort.
04:11 heapsort.
04.12 priority queues based on binary heap.

05. Algorithms for lists:


05:01 Listings: basic definitions and classical problems.
2.5 Algorithms visit, search, insertion and removal for listings.
3.5 Algorithms for the insertion and removal code.
5:04 Algorithms for inserting and removing batteries.

06. Algorithms for trees:


6.1 Trees: basic definitions and classical problems.
6.2 Algorithms visit and search for binary trees.
6:03 algorithms search, insertion and removal for binary search trees.
4.6 Criteria for balancing binary search trees.
6:05 algorithms search, insertion and removal for binary search trees, red-black.

07. Algorithms for graphs:


07:01 Graphs: basic definitions and classical problems.
7:02 visit and search algorithms for graphs.
07:03 topological sort algorithm for directed graphs and acyclic.
4.7 Strongly connected components algorithm for graphs.
7.5 Kruskal's algorithm.
6.7 Prim's algorithm.
7.7 Properties of the shortest path.
7:08 Bellman-Ford algorithm.
7.9 Dijkstra's algorithm.
07:10 Floyd-Warshall algorithm.

08. Algorithms for strings:


8:01 Strings: basic definitions and classical problems.
08:02 naive string matching algorithm.
8.3 Algorithm for calculating the edit distance between strings.
8.4 Algorithm for calculating the maximum common subsequence.

09. Selection and order statistics:


09.01 Basic definitions and problems.
09:02 Heapselect.
9:03 randomized selection.
09:04 deterministic selection.

10. Algorithmic techniques:


10.01 Technique of divide and rule.
10:02 Dynamic programming.
10:03 greedy technique.
4.10 Technique for attempts and withdrawals.

11. Laboratory activities:


11:01 Elements of the C language: references, editing, compiling, debugging.
11:02 pseudorandom number generator: srand and rand functions.
11:03 Experimental evaluation of the complexity of the algorithms: timing and
counters.
11:04 Experimental comparison of algorithms for sorting arrays.
11:05 Experimental comparison of search algorithms for binary trees.
11:06 Implementation of graph algorithms: visit breadth and depth of a graph,
Dijkstra's algorithm.
11:07 Implementation of algorithms on strings: LCS and edit distance.
Textbooks:
• Cormen, Leiserson, Rivest, Stein, "Introduction to Algorithms", MIT Press,
2001
(Cormen, Leiserson, Rivest, Stein, "Introduction to Algorithms and
Data Structures", McGraw-Hill, 2005).
• Crescenzi, Gambosi, Grossi, "Data Structures and Algorithms", Pearson /
Addison-Wesley, 2006.
• Demetrescu, Finocchi, Italian, "Algorithms and Data Structures", McGraw-
Hill, 2004.
• Sedgewick, "Algorithms in C", Addison-Wesley, 1997
(Sedgewick, "Algorithms in C", Pearson / Prentice Hall, 2002).
Prerequisites:
Procedural and Logic Programming, Mathematics.
Teaching methods:
Lectures and laboratory (teaching materials).
Method of assessment:
Individual project, written test and oral exam (exams).
Examining Board:
Ing Valerio Freschi and Prof. Marco Bernardo (Alternate: Prof. Alessandro
Bogliolo).
Notes:
The individual project, to be delivered at least seven days before the written test, is
considered sufficient if the relevant vote, which remains valid for all sessions, be at
least 18/30. If the project is delivered in a subsequent call, the vote of previously
delivered project is canceled. If delivery occurs at the same session, voting for the
new project is handed a penalty of 5 / 30.
The written test, which can be supported only after passing the project, is
considered sufficient if the relevant vote, which remains valid only for the appeal in
which evidence is sustained, is at least 18/30.
The oral exam, which can be sustained only upon passing the other two tests,
involves an adjustment for excess or shortfall of at most 5 / 30 in the arithmetic
average of the votes of the other two tests, thereby determining the final grade.

Das könnte Ihnen auch gefallen