Presentation is loading. Please wait.

Presentation is loading. Please wait.

6.170 Recitation Godfrey Tan.

Similar presentations


Presentation on theme: "6.170 Recitation Godfrey Tan."— Presentation transcript:

1 6.170 Recitation Godfrey Tan

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

3 Graph Basics Node Edge Nodes are connected via Edges
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 Distributed 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 Interface to users is via operations; changes made to representation does not affect the operations You can change the structures late in the game

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!


Download ppt "6.170 Recitation Godfrey Tan."

Similar presentations


Ads by Google