CSCE 210 Data Structures and Algorithms

47
Prof. Amr Goneid, AUC 1 CSCE 210 CSCE 210 Data Structures and Data Structures and Algorithms Algorithms Prof. Amr Goneid AUC Part 1. Data Modeling and ADTs

description

CSCE 210 Data Structures and Algorithms. Prof. Amr Goneid AUC Part 1. Data Modeling and ADTs. Data Modeling and ADTs. Data Modeling Abstract Data types (ADTs) A Classification of Abstract Structures Another Classification Special Data Structures OOP and Classes Examples on Modeling. - PowerPoint PPT Presentation

Transcript of CSCE 210 Data Structures and Algorithms

Page 1: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 1

CSCE 210CSCE 210Data Structures and AlgorithmsData Structures and Algorithms

Prof. Amr Goneid

AUC

Part 1. Data Modeling and ADTs

Page 2: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 2

Data Modeling and ADTsData Modeling and ADTs

Data Modeling Abstract Data types (ADTs) A Classification of Abstract Structures Another Classification Special Data Structures OOP and Classes Examples on Modeling

Page 3: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 3

1. Data Modeling1. Data Modeling

Real-world applications need to be reduced to a small number of existing problems (top-down design)

Real-world data need to be described in an abstract way in terms of fundamental structures

Page 4: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 4

Data ModelingData Modeling

The collection of data in some organization is called a “Data Structure”

The sequences of operations to be done on the data are called “Algorithms”

Page 5: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 5

Data ModelingData Modeling

The word Algorithm comes from the name of Abu Ja’afar Mohamed ibn Musa Al Khowarizmi (c. 825 A.D.)

An Algorithm is a procedure to do a certain task An Algorithm is supposed to solve a general, well-

specified problem

Page 6: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 6

Data ModelingData Modeling

A real-world application is basically

Data Structures + Algorithms

Page 7: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 7

Data ModelingData Modeling

Data and the Operations on that data are parts of an object that cannot be separated.

These two faces of an object are linked. Neither can be carried out independently of the other.

Page 8: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 8

The Data ConeThe Data Cone

Real-world Data

ADTs

Data Structures

Fundamental Data

Types

Page 9: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 9

2. Abstract Data Types (ADTs)2. Abstract Data Types (ADTs)

The most important attribute of data is its type. Type implies certain operation. It also prohibits other

operations. For example, + - * / are allowed for types int and

double, but the modulus (%) is allowed for int and prohibited for double.

When a certain data organization + its operations are not available in the language, we build it as a new data type. To be useful to many applications, we build it as an Abstract Data Type.

Page 10: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 10

Abstract Data Types (ADTs)Abstract Data Types (ADTs)

An ADT represents the logical or conceptual level of the data.

It consists of:

1. A collection of data items in some Data Structure

2. Operations (algorithms) on the data items For example, a Stack supports retrieval in LIFO

(Last In First Out) order. Basic operations are push and pop. It can be implemented using arrays (static or dynamic) or linked lists

Page 11: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 11

Abstract Data Types (ADTs)Abstract Data Types (ADTs)

The Data Structure used in implementing an ADT is usually dependent on the language.

In contrast, the definition of the ADT is separated from its implementation (Data Abstraction).

(e.g. ADT Stack can be implemented using a static array, a dynamic array or a linked list.

An ADT can be used in more than one application.

Page 12: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 12

Using ADT’sUsing ADT’s

ADT ADT ADT ADT ADT

Application Application Application

Standard Types/Libraries User Built ADT’s

Page 13: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 13

3. A Classification of Abstract 3. A Classification of Abstract Structures Structures According to the relationship between members

Abstract Structures

Sets Linear Trees Graphs

Page 14: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 14

SetsSets

Order of elements does not matter. Only that they are members of the same set ({1,3,4} is identical to {1,4,3}).

Can be implemented using arrays or linked lists.

Used in problems seeking: groups collection selection packaging

Page 15: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 15

Linear StructuresLinear Structures

Sequential, one-to-one relationship.Examples:Tables, Stacks, Queues, Strings and Permutations.

Can be implemented using arrays and linked lists (structs and pointers).

Used in problems dealing with: Searching, Sorting, stacking, waiting lines. Text processing, character sequences, patterns Arrangements, ordering, tours, sequences.

Page 16: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 16

TreesTrees

Non-Linear, hierarchical one-to-many.Examples:Binary Trees, Binary Search Trees (BST)

Can be implemented using arrays, structs and pointers

Used in problems dealing with: Searching Hierarchy Ancestor/descendant relationship Classification

Page 17: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 17

GraphsGraphs

Non-Linear, many-to-many. Can be implemented using arrays or linked

lists Used to model a variety of problems dealing

with: Networks Circuits Web Relationship Paths

Page 18: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 18

4. Another Classification of 4. Another Classification of Abstract StructuresAbstract StructuresAccording to their functions Special

Ab

stract Stru

ctures

Containers

Dictionaries

Priority Queues

Disjoint Sets

Graphs

Strings

Geometric DS

Page 19: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 19

ContainersContainers

Permit storage and retrieval of data items independent of content (access by location only).

Support two basic operations: Put (x,C): Insert item x in container C Get (C): Retrieve next item from C.

Page 20: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 20

ContainersContainers

Examples: Stacks: Last-In-First-Out (LIFO) structures Queues: First-In-First-Out (FIFO) structures Tables: Retrieval by position.

Page 21: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 21

DictionariesDictionaries

A form of container that permits access by content. Support the following main operations:

Insert (D,x): Insert item x in dictionary D Delete (D,x): Delete item x from D Search (D,k): search for key k in D

Page 22: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 22

DictionariesDictionaries

Examples: Unsorted arrays and Linked Lists: permit linear search Sorted arrays: permit Binary search Ordered Lists: permit linear search Binary Search Trees (BST): fast support of all dictionary

operations. Hash Tables: Fast retrieval by hashing key to a position.

Page 23: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 23

Priority QueuesPriority Queues

Allow processing items according to a certain order (Priority)

Support the following main operations: Insert (Q,x): Insert item x in priority queue

Q Remove (Q): Return and remove item with

Highest/Lowest Priority

Page 24: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 24

Priority QueuesPriority Queues

Examples: Heaps and Partially Ordered Trees (POT) Major DS in HeapSort

Page 25: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 25

Disjoint SetsDisjoint Sets

Disjoint sets are collections of elements with no common elements between the sets.

A set can be identified by a parent node and children nodes.

Page 26: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 26

Disjoint SetsDisjoint Sets

Support the following main operations: Find (i): Find Parent (set) containing node (i) Union (i,j): make set (i) the child of set (j)

Examples: Representation of disjoint collections of data Representation of Trees, Forests and Graphs

Page 27: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 27

GraphsGraphs

Can be used to represent any relationship and a wide variety of structures.

Page 28: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 28

GraphsGraphs

Can be used to represent any relationship and a wide variety of structures.

Well-known graph algorithms are the basis for many applications. Examples of such algorithms are: Minimum Spanning Trees Graph traversal (Depth-First and Breadth-First) Shortest Path Algorithms

Page 29: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 29

5. Special Data Structures5. Special Data Structures

Strings: Typically represented as arrays of characters. Various operations support pattern matching and string editing

Page 30: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 30

5. Special Data Structures5. Special Data Structures

Geometric Data Structures:Represent collections of data points and regions. Data points can represent segments. Segments can represent polygons that can represent regions.

Page 31: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 31

6. OOP & Classes6. OOP & Classes

The first step in creating an ADT is the process of Data Abstraction

Data Abstraction provides a completedescription of the following items independentof the way it will be implemented:

A definition of the ADT. Elements or members of that ADT. Relationship between the members. The fundamental operations on the

members.

Page 32: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 32

ADT ImplementationADT Implementation

Usually, an ADT can be implemented in different ways. To the applications, such implementation should be completely hidden. The Implementation part will describe:

how the ADT will be implemented using native Data Structures or other pre-defined ADT’s in C++.

how the relationships and fundamental operations on the members will beimplemented as C++ functions.

In Object Oriented Programming, ADTs are created as Classes

Page 33: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 33

OOP and ClassesOOP and Classes Object-Oriented Programming (OOP)

focuses on creating ADT’s called “Classes” that identify “objects” and how they work together.

A class contains “data members” + “function members” in one object.

A member function tells an object to “operate on itself” in some way.

Objects are “self-contained”, carrying their own operations.

Page 34: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 34

Data Encapsulation, Classes Data Encapsulation, Classes and Objectsand Objects A Class of objects is a user-defined Abstract Data

Type (ADT) An object is an instance of the class Once a class is defined, an object can be declared to

be of that type. For example, we have encountered the string class before. Since it has been defined, we can declare:

string message;

So, now message is an object of that class Classes can be used by more than one program.

Page 35: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 35

Sharing ClassesSharing Classes

Class Class Class Class Class

Program Program Program

Standard Classes User Classes

Page 36: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 36

Classes & EncapsulationClasses & Encapsulation

C++ classes are similar to structs, with the main difference being that classes can have member functions, or methods, as well as variables, or data members in their definitions.

Combining data and operations (methods) together in an object is called encapsulation.

An object of a class can operate on itself by the methods or member functions of that class. e.g., an object of class string can operate by:

.find .length .at .erase etc

Page 37: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 37

7. Examples on Modeling7. Examples on Modeling

Problem:

In Encryption problems, we need to do arithmetic on very large integers (e.g. 300 digits or more)

ADTs:

List Data Structures:

1-D array or Linked List

Page 38: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 38

Examples on ModelingExamples on Modeling

Problem: (Knapsack Problem)We have (n) objects each with a weight and a price and a container with maximum capacity (m). Select whole or fractions of the objects such that the total weight does not exceed (m) and the total price is maximum

ADTs:List

Data Structures:1-D array or Linked List

Page 39: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 39

Examples on ModelingExamples on Modeling

Problem: (Chess Games)8-Queens problem, Knight’s Tour problem, etc

ADTs:Board ADT

Data Structures:2-D array

Page 40: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 40

Examples on ModelingExamples on Modeling

Problem: (Dictionary)

We would like to build and use a small dictionary of words that translates from language (A) to language (B)

ADTs:

Key Table or List Data Structures:

1-D array or linked list

Page 41: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 41

Examples on ModelingExamples on Modeling

Problem: (Small and fast Directory)

We would like to build and use a small and fast directory to check username and pass word logins

ADTs:

Hash Table Data Structures:

1-D array

Page 42: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 42

Examples on ModelingExamples on Modeling

Problem: (Large and fast Directory)We would like to build and use a large and fast telephone directory.

ADTs:Binary Search Tree

Data Structures:Linked Structure (Nodes)

Page 43: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 43

Examples on ModelingExamples on Modeling

Problems: Evaluation of arithmetic expressions The Hanoi Towers game

ADTs:

Stack Data Structures:

1-D array or Linked List

Page 44: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 44

Examples on ModelingExamples on Modeling

Problem:

We would like to simulate the waiting process for airplanes to land in an airport.

ADTs:Queue

Data Structures:1-D array or Linked List

Page 45: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 45

Examples on ModelingExamples on Modeling

Problem: Sorting a set of elements Selection of the kth smallest (largest) element

ADTs:

Priority Queue Data Structures:

1-D array

Page 46: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 46

Examples on ModelingExamples on Modeling

Problem: Find the shortest path between a source and a

destination Find the exit in a Maze

ADTs:

Graph Data Structures:

2-D array or Linked list

Page 47: CSCE 210 Data Structures and Algorithms

Prof. Amr Goneid, AUC 47

Examples on ModelingExamples on Modeling

Problem:Find a wiring scheme for electrical power with minimum cost of wiring

ADTs:GraphPriority QueueDisjoint Sets

Data Structures:1-D arrays, 2-D array, Linked list