1 / 48

CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++

Learn about abstract data types (ADTs), their modeling and implementation using fundamental data structures and algorithms.

jluper
Télécharger la présentation

CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSCE 110PROGRAMMING FUNDAMENTALSWITH C++ Prof. AmrGoneid AUC Part 13. Abstract Data Types (ADT’s) Prof. amr Goneid, AUC

  2. Data Modeling and ADTs Prof. Amr Goneid, AUC

  3. Data Modeling and ADTs • Data Modeling • Abstract Data types (ADTs) • A Classification of Abstract Structures • Another Classification • Special Data Structures • Examples on Modeling • Example ADT’s Prof. Amr Goneid, AUC

  4. 1. 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 Prof. Amr Goneid, AUC

  5. Data 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” Prof. Amr Goneid, AUC

  6. Data 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 Prof. Amr Goneid, AUC

  7. Data Modeling • Areal-world application is basically Data Structures + Algorithms Prof. Amr Goneid, AUC

  8. Data 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. Prof. Amr Goneid, AUC

  9. The Data Cone Real-world Data ADTs Data Structures Fundamental Data Types Prof. Amr Goneid, AUC

  10. 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. Prof. Amr Goneid, AUC

  11. Abstract Data Types (ADTs) • An ADT represents the logical or conceptual level of the data. • It consists of: • A collection of data items in some Data Structure • 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 Prof. Amr Goneid, AUC

  12. Abstract Data Types (ADTs) • ADT (Abstract Data Type)is a description of a new data type together with operations on the data. • An ADT can be used in one or more applications. • The definition of the data type is separated from its implementation (Data Abstraction). • (e.g. ADT Table can be implemented using a static array, a dynamic array or a linked list. Prof. amr Goneid, AUC

  13. Using ADT’s ADT ADT ADT ADT ADT Program Program Program Standard Types/Libraries User Built ADT’s Prof. amr Goneid, AUC

  14. ADT Definition • The first step in creating an ADT is the process of Data Abstraction • Data Abstraction provides a complete description of the following items independent of 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. Prof. Amr Goneid, AUC

  15. ADT 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 be implemented as C++ functions. • In Object Oriented Programming, ADTs are created as Classes Prof. Amr Goneid, AUC

  16. 3. A Classification of Abstract Structures According to the relationship between members Data Structures Set Linear Tree Graph Prof. amr Goneid, AUC

  17. Abstract Structures • Sets: No relationship. Only that elements are members of the same set. • Linear: Sequential, one-to-one relationship e.g Arrays, Strings and Streams • Trees: Non-Linear, hierarchical one-to-many. • Graph: Non-Linear, many-to-many. Arrays, Structs, pointers and standard Classes are used to model different ADT’s. Prof. amr Goneid, AUC

  18. Sets • 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 Prof. Amr Goneid, AUC

  19. Linear 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. Prof. Amr Goneid, AUC

  20. Trees • 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 Prof. Amr Goneid, AUC

  21. Graphs • 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 Prof. Amr Goneid, AUC

  22. 4. Another Classification of Abstract Structures According to their functions Special Abstract Structures Containers Strings Dictionaries Geometric DS Priority Queues Disjoint Sets Graphs Prof. Amr Goneid, AUC

  23. Containers • 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. Prof. Amr Goneid, AUC

  24. Containers • Examples: • Stacks: Last-In-First-Out (LIFO) structures • Queues: First-In-First-Out (FIFO) structures • Tables: Retrieval by position. Prof. Amr Goneid, AUC

  25. Dictionaries • 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 Prof. Amr Goneid, AUC

  26. Dictionaries • 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. Prof. Amr Goneid, AUC

  27. Priority 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 Prof. Amr Goneid, AUC

  28. Priority Queues • Examples: • Heaps and Partially Ordered Trees (POT) • Major DS in HeapSort Prof. Amr Goneid, AUC

  29. Disjoint Sets • Disjoint sets are collections of elements with no common elements between the sets. • A set can be identified by a parentnode and children nodes. Prof. Amr Goneid, AUC

  30. Disjoint 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 Prof. Amr Goneid, AUC

  31. Graphs • Can be used to represent any relationship and a wide variety of structures. Prof. Amr Goneid, AUC

  32. Graphs • 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 Prof. Amr Goneid, AUC

  33. 5. Special Data Structures • Strings: Typically represented as arrays of characters. Various operations support pattern matching and string editing Prof. Amr Goneid, AUC

  34. 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. Prof. Amr Goneid, AUC

  35. 6. 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 Prof. Amr Goneid, AUC

  36. Examples 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 Prof. Amr Goneid, AUC

  37. Examples on Modeling • Problem: (Chess Games) 8-Queens problem, Knight’s Tour problem, etc • ADTs: Board ADT • Data Structures: 2-D array Prof. Amr Goneid, AUC

  38. Examples 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 Prof. Amr Goneid, AUC

  39. Examples 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 Prof. Amr Goneid, AUC

  40. Examples 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) Prof. Amr Goneid, AUC

  41. Examples on Modeling • Problems: • Evaluation of arithmetic expressions • The Hanoi Towers game • ADTs: Stack • Data Structures: 1-D array or Linked List Prof. Amr Goneid, AUC

  42. Examples 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 Prof. Amr Goneid, AUC

  43. Examples on Modeling • Problem: • Sorting a set of elements • Selection of the kth smallest (largest) element • ADTs: Priority Queue • Data Structures: 1-D array Prof. Amr Goneid, AUC

  44. Examples 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 Prof. Amr Goneid, AUC

  45. Examples on Modeling • Problem: Find a wiring scheme for electrical power with minimum cost of wiring • ADTs: Graph Priority Queue Disjoint Sets • Data Structures: 1-D arrays, 2-D array, Linked list Prof. Amr Goneid, AUC

  46. 7. Examples ADT’s: The Array as an ADT • Abstraction: A homogenous sequence of elements with a fixed size that allows direct access to its elements. • Elements (members): Any type, but all elements must be of the same type • Relationship: Linear (One-To-one). Ordered storage with direct access. • Fundamental Operations: • create array • store an element in the array at a given position (direct access) • retrievean element from a given position (direct access) Prof. amr Goneid, AUC

  47. Examples on ADT’s: ADT rational Abstraction: A rational number (fraction) is a rational representation of two integers (x,y). Elements or Members: A numerator (x) and a denominator (y), both are integers. (y) cannot be zero Relationship: The representation is equivalent to x / y Prof. amr Goneid, AUC

  48. ADT rational (continued) Fundamental Operations: • Read a fraction from keyboard • Display a fraction on the screen • Add Fractionsf = f1 + f2 (e.g. ½ + ¼ = ¾) • Subtract Fractionsf = f1 – f2 (e.g. ½ - 1/3 = 1/6) • Multiply Fractionsf = f1 * f2 (e.g. ½ * ¾ = 3/8) • Divide Fractionsf = f1 / f2 (e.g. 1/5 / ¼ = 4/5) • Reduce Fractions(e.g. 2/6 = 1/3) Prof. amr Goneid, AUC

More Related