representing sets topic 11
play

Representing sets Topic 11 Another data abstraction here the - PDF document

Representing sets Topic 11 Another data abstraction here the representation choice is no so obvious. Trade-offs of different Sets and their Representation choices can be seen. Set collection of distinct objects. How define? Set


  1. Representing sets Topic 11 Another data abstraction – here the representation choice is no so obvious. Trade-offs of different Sets and their Representation choices can be seen. Set – collection of distinct objects. How define? Set operations: • union-set---union of two sets 2.3.3 • intersection-set---intersection of two sets • element-of-set?---test membership in a set October 2008 • adjoin-set---add an element to a set Fall 2008 Programming Development 1 Fall 2008 Programming Development 2 Techniques Techniques Sets as unordered lists Adding an element to a set (without repetition) ; adds element to set (define (adjoin-set element set) ; takes an element and a set and is #t (if (element-of-set? element ; if element is in set (define (element-of-set? element set) set) (cond ((null? set) #f) set ((equal? element (car set)) #t) (cons element set))) (else (element-of-set? element (cdr set))))) Fall 2008 Programming Development 3 Fall 2008 Programming Development 4 Techniques Techniques Intersection Union ; intersects set1 and set2 (define (intersection-set set1 set2) ; returns a set that is the union of set1 and set2 (cond ((or (null? set1) (define (union-set set1 set2) (null? set2)) ()) (cond ((null? set1) set2) ((element-of-set? (car set1) ((element-of-set? (car set1) set2) set2) (union-set (cdr set1) set2)) (cons (car set1) (else (intersection-set (cons (car set1) (cdr set1) (union-set (cdr set1) set2))))) set2))) (else (intersection-set (cdr set1) set2)))) Fall 2008 Programming Development 5 Fall 2008 Programming Development 6 Techniques Techniques 1

  2. Sets as ordered lists (of Orders of growth for this numbers, ascending order) representation ; Advantage is that now this operation ; can be written more efficiently • element-of-set? --- θ (n) ; returns #t if element is in the • adjoin-set --- θ (n) ; ordered set of numbers • intersection-set --- θ (n 2 ) (define element-of-set? element set) • union-set --- θ (n 2 ) (cond ((null? set) #f) ((= element (car set)) #t) Could speed some of these operations if ((< element (car set)) #f) we change the representation of set. (else (element-of-set? Try a representation where set elements element listed in increasing order. (cdr set))))) Fall 2008 Programming Development 7 Fall 2008 Programming Development 8 Techniques Techniques (continued) intersection-set (bigger speed-up) ; returns an order set that is the ((< (car set1) (car set2)) ; intersection of ordered set1 and set2 (intersection-set (cdr set1) (define (intersection-set set1 set2) set2)) (cond ((or (null? set1) (null? set2)) (else ()) (intersection-set set1 ((= (car set1) (car set2)) (cdr (cons (car set1) set2))))) (intersection-set (cdr set1) (cdr set2)))) Fall 2008 Programming Development 9 Fall 2008 Programming Development 10 Techniques Techniques Orders of growth We can do even better! • All four operations have order of growth equal to θ (n) • Arrange set elements in the form of an ordered binary tree. • Operations element-of-set? and adjoin-set have been speeded up by a factor of 2 Binary tree • Entry – element at that spot • Left subtree – all elements are smaller than entry • Right subtree – all elements are greater than entry Fall 2008 Programming Development 11 Fall 2008 Programming Development 12 Techniques Techniques 2

  3. Notice: more than one representation Sets as (labeled) binary trees for any list ; we can represent binary trees as lists • {1, 2, 4, 5, 6, 8, 10} ; make a tree from an entry and a left ; and right child (define (make-tree entry • (5 (2 (1 () ()) (4 () ())) (8 (6 () ()) (10 () ())) left-child right-child) • (2 (1 () ()) (4 () (8 (6 (5 () ())) () (10 () ())))) (list entry left-child right-child)) • (4 (2 () ()) (6 (5 () ()) (8 () 10) ; selectors for a tree (define (entry tree) (car tree)) • (4 (2 (1 () ())) (5 () (6 () (8 () (10 () ()))))) (define (left-branch tree) (cadr tree)) (define (right-branch tree) (caddr tree)) Fall 2008 Programming Development 13 Fall 2008 Programming Development 14 Techniques Techniques element of set adjoin set ; takes an element and a set represented ; takes an element and a set represented as ; as a binary tree – returns #t if element ; a binary tree. Adds element into the set ; is in set (define (adjoin-set element set) (define (element-of-set? element set) (cond ((null? set) (cond ((null? set) #f) (make-tree element () ())) ((= element (entry set)) #t) ((= element (entry set)) set) ((< element (entry set)) ((< element (entry set)) (element-of-set? element (make-tree (entry set) (left-branch set))) (adjoin-set (else element (element-of-set? (left-branch set)) element (right-branch set))) (right-branch set))))) Fall 2008 Programming Development 15 Fall 2008 Programming Development 16 Techniques Techniques (continued) Properties of tree represention • If the trees are kept balanced, order of growth of (else element-of-set? and adjoin-set is θ (log n) (make-tree (entry set) • Operations intersection-set and union-set (left-branch set) can be implemented to have order of growth (adjoin-set θ (n), but the implementations are complicated element (right-branch set)))))) Fall 2008 Programming Development 17 Fall 2008 Programming Development 18 Techniques Techniques 3

  4. Comparison: orders of growth ( θ ) Operation unordered ordered tree element-of-set? n n log n adjoin-set n n log n intersection-set n 2 n n union-set n 2 n n Fall 2008 Programming Development 19 Techniques 4

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend