Map ADT by Dr. Bun Yue Professor of Computer Science 2013 CSCI 3333 Data Structures.

Slides:



Advertisements
Similar presentations
© 2004 Goodrich, Tamassia Hash Tables1  
Advertisements

© 2004 Goodrich, Tamassia Dictionaries   
© 2004 Goodrich, Tamassia Maps1. © 2004 Goodrich, Tamassia Maps2 A map models a searchable collection of key-value entries The main operations of a map.
9.3 The Dictionary ADT    … 01/25/98, Taipei, … 03/04/98, Yunlin, … 02/15/98, Douliou, … 01/20/98,
Dictionaries1 © 2010 Goodrich, Tamassia m l h m l h m l.
Maps. Hash Tables. Dictionaries. 2 CPSC 3200 University of Tennessee at Chattanooga – Summer 2013 © 2010 Goodrich, Tamassia.
Data Structures Lecture 12 Fang Yu Department of Management Information Systems National Chengchi University Fall 2010.
Data Structures Lecture 13 Fang Yu Department of Management Information Systems National Chengchi University Fall 2010.
© 2004 Goodrich, Tamassia Dictionaries   
CSC311: Data Structures 1 Chapter 9: Maps and Dictionaries Objectives: Map ADT Hash tables –Hash functions and hash code –Compression functions and collisions.
Dictionaries and Hash Tables1  
© 2004 Goodrich, Tamassia Priority Queues1. © 2004 Goodrich, Tamassia Priority Queues2 Priority Queue ADT (§ 7.1.3) A priority queue stores a collection.
© 2004 Goodrich, Tamassia Maps1. © 2004 Goodrich, Tamassia Maps2 A map models a searchable collection of key-value entries The main operations of a map.
Data Structures Hash Table (aka Dictionary) i206 Fall 2010 John Chuang Some slides adapted from Marti Hearst, Brian Hayes, Andreas Veneris, Glenn Brookshear,
CSE 373 Data Structures and Algorithms Lecture 18: Hashing III.
Dictionaries 4/17/2017 3:23 PM Hash Tables  
Maps, Hash Tables and Dictionaries Chapter 10.1, 10.2, 10.3, 10.5.
1Master of Computer Engineering Chiangmai University.
CS-2851 Dr. Mark L. Hornick 1 Tree Maps and Tree Sets The JCF Binary Tree classes.
D ESIGN & A NALYSIS OF A LGORITHM 07 – M AP Informatics Department Parahyangan Catholic University.
Hash Tables1   © 2010 Goodrich, Tamassia.
LECTURE 36: DICTIONARY CSC 212 – Data Structures.
Queues by Dr. Bun Yue Professor of Computer Science CSCI 3333 Data Structures.
Maps and Dictionaries Data Structures and Algorithms CS 244 Brent M. Dingle, Ph.D. Department of Mathematics, Statistics, and Computer Science University.
Maps, Hash Tables, Skip Lists, Sets last Update: Nov 4, 2014 EECS2011: Maps, Hash Tables, Skip Lists, Sets1.
Binary Search Trees (10.1) CSE 2011 Winter November 2015.
Searching and Binary Search Trees CSCI 3333 Data Structures.
© 2004 Goodrich, Tamassia Hash Tables1  
CSC 212 – Data Structures Lecture 26: Hash Tables.
Collections Data structures in Java. OBJECTIVE “ WHEN TO USE WHICH DATA STRUCTURE ” D e b u g.
Hashing by Dr. Bun Yue Professor of Computer Science CSCI 3333 Data Structures.
Maps & dictionaries Go&Ta A map models a searchable collection of key-value entries The main operations of a map are for searching, inserting,
1 i206: Lecture 12: Hash Tables (Dictionaries); Intro to Recursion Marti Hearst Spring 2012.
Dictionaries and Hashing CSCI 3333 Data Structures.
QuickSort by Dr. Bun Yue Professor of Computer Science CSCI 3333 Data.
CH 9 : MAPS AND DICTIONARIES 1 ACKNOWLEDGEMENT: THESE SLIDES ARE ADAPTED FROM SLIDES PROVIDED WITH DATA STRUCTURES AND ALGORITHMS IN C++, GOODRICH, TAMASSIA.
Maps1 © 2010 Goodrich, Tamassia. Maps2  A map models a searchable collection of key-value entries  The main operations of a map are for searching, inserting,
© 2004 Goodrich, Tamassia Maps1. © 2004 Goodrich, Tamassia Maps2 A map models a searchable collection of key-value entries The main operations of a map.
© 2004 Goodrich, Tamassia BINARY SEARCH TREES Binary Search Trees   
1 COMP9024: Data Structures and Algorithms Week Eight: Maps and Dictionaries Hui Wu Session 2, 2014
1 COMP9024: Data Structures and Algorithms Week Nine: Maps and Dictionaries Hui Wu Session 1, 2016
Hashing1 Maps and hashing. Dr.Alagoz Hashing2 Maps A map models a searchable collection of key- value entries Typically a key is a string with an associated.
1 COMP9024: Data Structures and Algorithms Week Eight: Maps and Dictionaries Hui Wu Session 1, 2014
Lecture14: Hashing Bohyung Han CSE, POSTECH CSED233: Data Structures (2014F)
Maps Rem Collier Room A1.02 School of Computer Science and Informatics
Binary Search Trees < > = © 2010 Goodrich, Tamassia
Binary Search Trees < > =
Design & Analysis of Algorithm Map
CSCI 3333 Data Structures Stacks.
Efficiency of in Binary Trees
Binary Search Trees (10.1) CSE 2011 Winter August 2018.
Hash Tables 3/25/15 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M.
Dictionaries < > = Dictionaries Dictionaries
Binary Search Trees (10.1) CSE 2011 Winter November 2018.
Data Structures Maps and Hash.
Binary Search Trees < > = © 2010 Goodrich, Tamassia
Copyright © Aiman Hanna All rights reserved
Maps.
Searching and BST Exercises
Ordered Maps & Dictionaries
Dictionaries < > = /9/2018 3:06 AM Dictionaries
Copyright © Aiman Hanna All rights reserved
"He's off the map!" - Eternal Sunshine of the Spotless Mind
Dictionaries < > = /17/2019 4:20 PM Dictionaries
CH 9 : Maps And Dictionary
CS210- Lecture 17 July 12, 2005 Agenda Collision Handling
CS210- Lecture 16 July 11, 2005 Agenda Maps and Dictionaries Map ADT
CS210- Lecture 15 July 7, 2005 Agenda Median Heaps Adaptable PQ
Lecture 11 CS
Dictionaries < > = Dictionaries Dictionaries
Presentation transcript:

Map ADT by Dr. Bun Yue Professor of Computer Science CSCI 3333 Data Structures

Acknowledgement  Mr. Charles Moen  Dr. Wei Ding  Ms. Krishani Abeysekera  Dr. Michael Goodrich

Maps  A map models a searchable collection of key-value entries  The main operations of a map are for searching, inserting, and deleting items  Multiple entries with the same key are not allowed => the key is unique.  Applications: address book student-record database

An Example Map ADT  Map ADT methods: get(k): if the map M has an entry with key k, return its associated value; else, return null put(k, v): insert entry (k, v) into the map M; if key k is not already in M, then return null; else, return old value associated with k remove(k): if the map M has an entry with key k, remove it from M and return its associated value; else, return null size(), isEmpty() keys(): return an iterator of the keys in M values(): return an iterator of the values in M

Example OperationOutputMap isEmpty()true Ø put(5,A)null(5,A) put(7,B)null(5,A),(7,B) put(2,C)null(5,A),(7,B),(2,C) put(8,D)null(5,A),(7,B),(2,C),(8,D) put(2,E)C(5,A),(7,B),(2,E),(8,D) get(7)B(5,A),(7,B),(2,E),(8,D) get(4)null(5,A),(7,B),(2,E),(8,D) get(2)E(5,A),(7,B),(2,E),(8,D) size()4(5,A),(7,B),(2,E),(8,D) remove(5)A(7,B),(2,E),(8,D) remove(2)E(7,B),(8,D) get(2)null(7,B),(8,D) isEmpty()false(7,B),(8,D)

Comparison to java.util.Map Map ADT Methodsjava.util.Map Methodssize()isEmpty() get(k)get(k) put(k,v)put(k,v) remove(k)remove(k) keys()keySet().iterator() values()values().iterator()

Java Map Interface  Map is an interface in Java.  Many general implementations: HashMap Hashtable LinkedHashMap TreeMap …  Sub-interfaces: SortedMap ConcurrentMap …

Map in Perl  The built-in hash data structure in Perl is basically a map.  Hashes in Perl starts with the symbol %.  Each hash value must be a scalar.

Hash Example in Perl %h = ("yue", 1, "moen", 5, "davari", 2); $h{"yue"} = 6; $h{"abeysekera"} = 9; while (($key, $value) = each %h) { print "$key => $value\n"; } foreach $key (sort keys %h) { print "$key => $h{$key}\n"; } delete($h{"yue"}); foreach $key (sort keys %h) { print "$key => $h{$key}\n"; }

Output abeysekera => 9 davari => 2 moen => 5 yue => 6 abeysekera => 9 davari => 2 moen => 5 yue => 6 abeysekera => 9 davari => 2 moen => 5

A Simple List-Based Map  We can efficiently implement a map using an unsorted list We store the items of the map in a list S (based on a doubly-linked list), in arbitrary order trailer header nodes/positions entries 9 c 6 c 5 c 8 c

The get(k) Algorithm Algorithm get(k): B = S.positions() {B is an iterator of the positions in S} while B.hasNext() do p = B.next()fthe next position in Bg if p.element().key() = kthen return p.element().value() return null {there is no entry with key equal to k}

The put(k,v) Algorithm Algorithm put(k,v): B= S.positions() while B.hasNext() do p = B.next() if p.element().key() = k then t = p.element().value() B.replace(p,(k,v)) return t{return the old value} S.insertLast((k,v)) n = n + 1 {increment variable storing number of entries} return null{there was no previous entry with key equal to k}

The remove(k) Algorithm Algorithm remove(k): B =S.positions() while B.hasNext() do p = B.next() if p.element().key() = k then t = p.element().value() S.remove(p) n = n – 1 {decrement number of entries} return t{return the removed value} return null{there is no entry with key equal to k}

Performance of a List-Based Map  Performance: put, get and remove take O(n) time since in the worst case (the item is not found) we traverse the entire sequence to look for an item with the given key  The unsorted list implementation is effective only for maps of small size or for maps in which puts are the most common operations, while searches and removals are rarely performed (e.g., historical record of logins to a workstation)

Other Map Implementations  Other possible implementations of a map: Trees: e.g. BST.  put, get and remove: average time of O(lg n). Hash:  put, get and remove: average time of O(1).

Maps and Dictionaries  Maps and dictionaries may sometime be used in an interchangeable manner.  One way of differentiation: Map: keys are unique. Dictionary: keys may not be unique. More than one key-value pairs may have the same key values.

Questions and Comments?