1 / 25

6.170 Recitation

6.170 Recitation. Godfrey Tan. Announcements. Quiz 1 Review Sunday, March 3, 7:30pm, 34-101 Problem Set 3 Tuesday, March 5 Quiz 1 (L1-L10): Wednesday, March 6 during class Locations 54-100 for usernames a*-j* 34-101 for usernames k*-z* Open book, but it is a short quiz!.

damara
Télécharger la présentation

6.170 Recitation

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. 6.170 Recitation Godfrey Tan

  2. Announcements • Quiz 1 Review • Sunday, March 3, 7:30pm, 34-101 • Problem Set 3 • Tuesday, March 5 • Quiz 1 (L1-L10): • Wednesday, March 6 during class • Locations • 54-100 for usernames a*-j* • 34-101 for usernames k*-z* • Open book, but it is a short quiz!

  3. Graph Basics • Node • Station: id, name • Edge • Line: type, (in station, out station) • Nodes are connected via Edges • Graph is a collection of nodes and edges

  4. Graph Requirements • Directed • Multi-graph • Dynamic: add and remove nodes • Flexible: works for other applications

  5. Graph Operations • addNode, containsNode • addEdge, containsEdge • Traversal • Predecessors, successors

  6. Graph Implementation • Centralized • Graph stores everything • May or may not require Node class • Distributed • Graph stores Nodes • Node stores Edges

  7. Storing Nodes and Edges • Adjacency lists • Nodes • IN Edges, Out Edges for each Node • Adjacency matrices • Two dimensional arrays • HashMap • Stores (key, value)

  8. Traversal • Depth first search • Breadth first search • Operations • Mark: found, visited • Visit

  9. Inputs and outputs • Input: Harvard Alewife • Output: [Harvard(14), Porter(10), Davis(7), Alewife(8)]

  10. Abstract Data Type: What? • Abstraction by specification • Operations (T = abstract type, t = some other type) • Constructors: t  T • Producers: T, t  T • Mutators: T, t  void • Observers: T, t  t • Designing an Abstract Type • Few, simple operations that can be combined in powerful ways • Operations should have well-defined purpose, coherent behavior • Set of operations should be adequate

  11. Abstract Data Type: Why? Allows us to: • abstract from the details of • how data objects are implemented • how they behave • defer decisions about the data structures

  12. Implementing an ADT • Select the rep (representation of instances) • Implement operations in terms of that rep

  13. Rep • Data structure plus • Set of conventions defined by • rep invariant • abstraction function

  14. A Rep example We want a representation of a list of 3 integers sorted in ascending order [ x1, x2, x3 ] where x1 <= x2 <= x3

  15. Sorted List class SortedList { Vector v; Integer foo; // requires: a <= b <= c public SortedListA(Integer a, Integer b, Integer c) { v = new Vector(); foo = new Integer(666); v.add(a); v.add(foo); v.add(b); v.add(foo); v.add(c); v.add(foo); }… }

  16. Rep • Data structure plus • Set of conventions defined by • rep invariant • abstraction function What is the data structure for SortedList?

  17. Rep • Data structure plus • Set of conventions defined by • rep invariant • abstraction function What is the data structure for SortedList? Vector

  18. Abstraction Function What is the abstraction function?

  19. Abstraction Function What is the abstraction function? Mapping from vector elements to abstract values [ v[0], v[2], v[4] ] maps to [ x1, x2, x3 ]

  20. Is this implementation necessarily wrong? class SortedList { Vector v; Integer foo; // requires: a <= b <= c public SortedListA(Integer a, Integer b, Integer c) { v = new Vector(); foo = new Integer(666); v.add(b); v.add(foo); v.add(a); v.add(foo); v.add(c); v.add(foo); }… }

  21. Abstraction Function Just redefine the abstraction function! [ v[2], v[0], v[4] ] maps to [ x1, x2, x3 ] Abstraction function defines the convention or the way we interpret the underlying data structure for the abstraction it represents.

  22. Representation Invariant If I decide that my representation invariant is the following: v != null && v.size() == 6 && all elements in v are Integers && foo == Integer(666) Then all operations: constructors, producers, mutators, observers MUST maintain this property!!!

  23. Representation Invariant If I decide that my representation invariant is the following: v != null && v.size() == 6 && all elements in v are Integers && foo == Integer(666) Suppose I take out the last clause, then what does this imply? Then the operators: the constructors, producers, mutators, observers cannot always expect foo == Integer(666) in their implementation!

  24. Representation Invariant The idea behind Representation Invariant is to allow the implementation of each operation to agree on a set of assumptions about the data structure!

  25. Quiz 1 Questions? Good luck on the quiz!

More Related