Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures,...

187
Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall 1 Jaak Vilo

Transcript of Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures,...

Page 1: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

AdvancedAlgorithmics(6EAP)MTAT.03.238

Linearstructures,sorting,searching,etc

JaakVilo2016Fall

1JaakVilo

Page 2: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Big-Ohnotationclasses

Class Informal Intuition Analogy

f(n)∈ ο (g(n)) fisdominatedbyg Strictlybelow <f(n)∈O(g(n)) Boundedfromabove Upperbound ≤f(n)∈Θ(g(n)) Boundedfrom

aboveand below“equalto” =

f(n)∈Ω(g(n)) Boundedfrombelow Lowerbound ≥f(n)∈ω(g(n)) fdominatesg Strictlyabove >

Page 3: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Conclusions

• Algorithmcomplexitydealswiththebehaviorinthelong-term– worstcase -- typical– averagecase -- quitehard– bestcase -- bogus,“cheating”

• Inpractice,long-termsometimesnotnecessary– E.g.forsorting20elements,youdon’tneedfancyalgorithms…

Page 4: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Linear,sequential,ordered,list…

Memory, disk, tape etc – is an ordered sequentially addressed media.

Page 5: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Physicalorderedlist~array

• Memory/address/– Garbagecollection

• Files(character/bytelist/linesintextfile,…)

• Disk– Diskfragmentation

Page 6: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Lineardatastructures:Arrays• Array• Bidirectionalmap• Bitarray• Bitfield• Bitboard• Bitmap• Circularbuffer• Controltable• Image• Dynamicarray• Gapbuffer

• Hashedarraytree• Heightmap• Lookuptable• Matrix• Parallelarray• Sortedarray• Sparsearray• Sparsematrix• Iliffevector• Variable-lengtharray

Page 7: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Lineardatastructures:Lists

• Doublylinkedlist• Arraylist• Linkedlist• Self-organizinglist• Skiplist• Unrolledlinkedlist• VList

• Xorlinkedlist• Zipper• Doublyconnectededgelist

• Differencelist

Page 8: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Lists:Array

3 6 7 5 2

0 1 size MAX_SIZE-1

L = int[MAX_SIZE]

L[2]=7

Page 9: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Lists:Array

3 6 7 5 2

0 1 size MAX_SIZE-1

L = int[MAX_SIZE]

L[2]=7 L[size++] = new

3 6 7 5 2

1 2 size MAX_SIZE

L[3]=7 L[++size] = new

Page 10: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Multiplelists,2-D-arrays,etc…

Page 11: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

2Darray

& A[i,j] = A + i*(nr_el_in_row*el_size) + j*el_size

Page 12: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

LinearLists

• Operationswhichonemaywanttoperformonalinearlistofn elementsinclude:

– gainaccess tothekthelementofthelisttoexamine and/orchange thecontents

– insert anewelementbeforeorafterthekthelement

–delete thekthelementofthelist

Reference:Knuth,TheArtofComptuerProgramming,Vol1,FundamentalAlgorithms,3rd Ed.,p.238-9

Page 13: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

AbstractDataType(ADT)• High-leveldefinitionofdatatypes

• AnADTspecifies– Acollection ofdata– Asetofoperations onthedataorsubsetsofthedata

• ADTdoesnotspecifyhowtheoperationsshouldbeimplemented

• Examples– vector,list,stack,queue,deque,priorityqueue,table(map),

associativearray,set,graph,digraph

Page 14: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

ADT• Adatatype isasetofvaluesandanassociatedsetof

operations• Adatatypeisabstract iffitiscompletelydescribedbyitsset

ofoperationsregradlessofitsimplementation• Thismeansthatitispossibletochangetheimplementation

ofthedatatypewithoutchangingitsuse• Thedatatypeisthusdescribedbyasetofprocedures• Theseoperationsaretheonlythingthatauserofthe

abstractioncanassume

Page 15: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Abstractdatatypes:

• Dictionary (key,value)• Stack(LIFO)• Queue(FIFO)• Queue(double-ended)• Priorityqueue(fetchhighest-priorityobject)• ...

Page 16: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Dictionary

• Containerofkey-element(k,e)pairs• Requiredoperations:

– insert(k,e),– remove(k),– find(k),– isEmpty()

• Mayalsosupport(whenanorderisprovided):– closestKeyBefore(k),– closestElemAfter(k)

• Note:Noduplicatekeys

Page 17: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Abstractdatatypes

• Container• Stack• Queue• Deque• Priorityqueue

• Dictionary/Map/Associativearray

• Multimap• Set• Multiset• String• Tree• Graph• Hash

Page 18: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Somedatastructuresfor DictionaryADT• Unordered

– Array– Sequence/list

• Ordered– Array– Sequence(SkipLists)– BinarySearchTree(BST)– AVLtrees,red-blacktrees– (2;4)Trees– B-Trees

• Valued– HashTables– ExtendibleHashing

Page 19: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Primitive&compositetypesPrimitivetypes• Boolean (forboolean values

True/False)• Char (forcharactervalues)• int (forintegralorfixed-precision

values)• Float (forstoringrealnumber

values)• Double (alargersizeoftypefloat)• String (forstringofchars)• Enumerated type

Compositetypes• Array• Record (alsocalledtupleorstruct)

• Union• Taggedunion(alsocalledavariant,variantrecord,discriminatedunion,ordisjointunion)

• Plainolddatastructure

Page 20: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Lineardatastructures

Arrays• Array• Bidirectional

map• Bitarray• Bitfield• Bitboard• Bitmap• Circularbuffer• Controltable• Image• Dynamicarray• Gapbuffer

• Hashedarraytree

• Heightmap• Lookuptable• Matrix• Parallelarray• Sortedarray• Sparsearray• Sparsematrix• Iliffe vector• Variable-length

array

Lists• Doublylinkedlist• Linkedlist• Self-organizinglist• Skiplist• Unrolledlinkedlist• VList• Xor linkedlist• Zipper• Doublyconnectededgelist

Page 21: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Trees…Binarytrees• AAtree• AVLtree• Binarysearch

tree• Binarytree• Cartesiantree• Pagoda• Randomized

binarysearchtree

• Red-blacktree• Rope• Scapegoattree• Self-balancing

binarysearchtree

• Splaytree• T-tree• Tangotree• Threadedbinary

tree• Toptree

• Treap• Weight-balanced

tree

B-trees• B-tree• B+tree• B*-tree• Bsharptree• Dancingtree• 2-3tree• 2-3-4tree• Queap• Fusiontree• Bx-tree

Heaps• Heap• Binaryheap• Binomialheap• Fibonacciheap• AF-heap• 2-3heap

• Softheap• Pairingheap• Leftistheap• Treap• Beap• Skewheap• Ternaryheap• D-ary heap•• Tries• Trie• Radixtree• Suffixtree• Suffixarray• Compressed

suffixarray• FM-index• Generalised

suffixtree• B-trie• Judyarray• X-fasttrie• Y-fasttrie

• Ctrie

Multiway trees• Ternarysearch

tree• And–ortree• (a,b)-tree• Link/cuttree• SPQR-tree• Spaghettistack• Disjoint-setdata

structure• Fusiontree• Enfilade• Exponentialtree• Fenwicktree• VanEmde Boas

tree

Space-partitioningtrees• Segmenttree

• Intervaltree• Rangetree• Bin• Kd-tree• Implicitkd-tree• Min/maxkd-tree• Adaptivek-dtree• Kdb tree• Quadtree• Octree• Linearoctree• Z-order• UB-tree• R-tree• R+tree• R*tree• HilbertR-tree• X-tree• Metrictree• Covertree• M-tree• VP-tree

• BK-tree• Bounding

intervalhierarchy

• BSPtree• Rapidly-exploring

randomtree

Application-specifictrees• Syntaxtree• Abstractsyntax

tree• Parsetree• Decisiontree• Alternating

decisiontree• Minimax tree• Expectiminimax

tree• Fingertree

Page 22: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Hashes,Graphs,Other• Hashes• Bloomfilter• Distributedhashtable• Hasharraymapped

trie• Hashlist• Hashtable• Hashtree• Hashtrie• Koorde• Prefixhashtree•

Graphs• Adjacencylist• Adjacencymatrix• Graph-structured

stack• Scenegraph• Binarydecision

diagram• Zerosuppressed

decisiondiagram• And-invertergraph• Directedgraph• Directedacyclicgraph

• Propositionaldirectedacyclicgraph

• Multigraph• Hypergraph

Other• Lightmap• Wingededge• Quad-edge• Routingtable• Symboltable

Page 23: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Lists:Array

3 6 7 5 2

0 1 size MAX_SIZE-1

3 6 7 8 2

0 1 size

5 2 Insert 8 after L[2]

3 6 7 8 2

0 1 size

5 2 Delete last

*array (memory address)sizeMAX_SIZE

Page 24: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Lists:Array

3 6 7 8 2

0 1 size

5 2 Insert 8 after L[2]

3 6 7 8 2

0 1 size

5 2 Delete last

• Access i O(1)• Insert to end O(1)• Delete from end O(1)• Insert O(n) • Delete O(n)• Search O(n)

Page 25: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

LinearLists

• Otheroperationsonalinearlistmayinclude:– determinethenumberofelements– searchthelist– sortalist– combinetwoormorelinearlists– splitalinearlistintotwoormorelists– makeacopyofalist

Page 26: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Stack

• push(x) -- addtoend(addtotop)• pop() -- fetchfromend(top)

• O(1)inallreasonablecasesJ

• LIFO– LastIn,FirstOut

Page 27: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Linkedlistshead tail

head tail

Singly linked

Doubly linked

Page 28: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Linkedlists:addhead tail

head tail

size

Page 29: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Linkedlists:delete(+garbagecollection?)

head tail

head tail

size

Page 30: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Operations

• Arrayindexedfrom0 ton – 1:

• Singly-linkedlistwithheadandtailpointers

1 undertheassumptionwehaveapointertothekthnode,O(n) otherwise

k = 1 1 < k < n k = naccess/change the kth element O(1) O(1) O(1)

insert before or after the kth element O(n) O(n) O(1)

delete the kth element O(n) O(n) O(1)

k = 1 1 < k < n k = naccess/change the kth element O(1) O(n) O(1)

insert before or after the kth element O(1) O(n) O(1)1 O(n) O(1)

delete the kth element O(1) O(n) O(n)

Page 31: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

ImprovingRun-TimeEfficiency

• Wecanimprovetherun-timeefficiencyofalinkedlistbyusingadoubly-linkedlist:

Singly-linkedlist:

Doubly-linkedlist:

– Improvementsatoperationsrequiringaccesstothepreviousnode

– Increasesmemoryrequirements...

Page 32: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

ImprovingEfficiency

Singly-linkedlist:

Doubly-linkedlist:

1 undertheassumptionwehaveapointertothekthnode,O(n) otherwise

k = 1 1 < k < n k = naccess/change the kth element O(1) O(n) O(1)

insert before or after the kth element O(1) O(1)1 O(1)

delete the kth element O(1) O(1)1 O(1)

k = 1 1 < k < n k = naccess/change the kth element O(1) O(n) O(1)

insert before or after the kth element O(1) O(n) O(1)1 O(n) O(1)

delete the kth element O(1) O(n) O(n)

Page 33: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

• Arrayindexedfrom0 ton – 1:

• Singly-linkedlistwithheadandtailpointers

• Doublylinkedlist

k = 1 1 < k < n k = naccess/change the kth element O(1) O(1) O(1)

insert before or after the kth element O(n) O(n) O(1)

delete the kth element O(n) O(n) O(1)

k = 1 1 < k < n k = naccess/change the kth element O(1) O(n) O(1)

insert before or after the kth element O(1) O(n) O(1)1 O(n) O(1)

delete the kth element O(1) O(n) O(n)

k = 1 1 < k < n k = naccess/change the kth element O(1) O(n) O(1)

insert before or after the kth element O(1) O(1)1 O(1)

delete the kth element O(1) O(1)1 O(1)

Page 34: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Introductiontolinkedlists• Considerthefollowingstructdefinition

struct node {string word;int num;node *next; //pointer for the next node

};node *p = new node;

? ?

num word next

p ?

Page 35: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Introductiontolinkedlists:insertinganode

• node *p;• p = new node;

• p->num = 5; • p->word = "Ali";• p->next = NULL

•5 Ali

num word next

p

Page 36: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Introductiontolinkedlists:addinganewnode

• Howcanyouaddanothernodethatispointedbyp->link?

• node *p;• p = new node;• p->num = 5; • p->word = "Ali";• p->next = NULL;• node *q;

5 Ali

num word link

?p

q

Page 37: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Introductiontolinkedlistsnode *p;p = new node;p->num = 5; p->word = "Ali";p->next = NULL;

node *q;q = new node;

5 Ali

num word link

? ? ?

num word link

?

q

p

Page 38: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Introductiontolinkedlistsnode *p, *q;p = new node;p->num = 5; p->word = "Ali";p->next = NULL;

q = new node;q->num=8;q->word = "Veli";

5 Ali

num word next

? 8 Veli

num word next

?p

q

Page 39: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Introductiontolinkedlistsnode *p, *q;p = new node;p->num = 5; p->word = "Ali";p->next = NULL;

q = new node;q->num=8;q->word = "Veli";p->next = q;q->next = NULL;

5 Ali

num word link

? 8 Veli

num word link

p

q

Page 40: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

PointersinC/C++

p=newnode;deletep;p=newnode[20];

p=malloc(sizeof(node));freep;

p=malloc(sizeof(node)*20);(p+10)->next=NULL;/*11thelements*/

Page 41: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Book-keeping

• malloc,new – “remember” whathasbeencreatedfree(p),delete (C/C++)

• Whenyouneedmanysmallareastobeallocated,reserveabigchunk(array)andmaintainyourownsetoffreeobjects

• Elementsofarrayofobjects canbepointedbythepointertoanobject.

Page 42: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Object

• Object=newobject_type;

• Equalstocreatinganewobjectwithnecessarysizeofallocatedmemory(deletecanfreeit)

Page 43: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Somelinks

• http://en.wikipedia.org/wiki/Pointer

• Pointerbasics:http://cslibrary.stanford.edu/106/

• C++MemoryManagement:Whatisthedifferencebetweenmalloc/freeandnew/delete?– http://www.codeguru.com/forum/showthread.php?t=401848

Page 44: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Alternative:arraysandintegers

• Ifyouwanttotestpointersandlinkedlistetc.datastructures,butdonothavepointersfamiliar(yet)

• Usearraysandindexestoarrayelementsinstead…

Page 45: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Replacingpointerswitharrayindex

/

7

5

5

8

/

1

4

3

1 2 3 4 5 6 7head=3

next

keyprev

8 4 7

head

Page 46: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Maintaininglistoffreeobjects

/

7

5

5

8

/

1

4

3

1 2 3 4 5 6 7head=3

next

keyprev

8 4 7

head

/

7

5

4 5

8

/

/ 1

4

3

7 21 2 3 4 5 6 7

head=3

next

keyprev

free=6 free = -1 => array is full

allocate object:new = free;free = next[free] ;

free object xnext[x]= freefree = x

Page 47: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Multiplelists,singlefreelist

/

7

5

4 5

8

/

/ 1

4

3

7

3

/

/

9

6

1 2 3 4 5 6 7next

keyprev

head1=3 => 8, 4, 7head2=6 => 3, 9free =2 (2)

Page 48: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Hack:allocatemorearrays…

1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

AA

AA[ (i-1)/7 ] -> [ (i -1) % 7 ]

LIST(10) = AA[ 1 ][ 2 ]

LIST(19) = AA[ 2 ][ 5 ]

use integer division and mod

Page 49: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 50: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Queue

• enqueue(x) - addtoend• dequeue() - fetchfrombeginning

• FIFO– FirstInFirstOut

• O(1)inallreasonablecasesJ

Page 51: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Queue(FIFO)

3 6 7 5 2

F L

Page 52: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Queue(basicidea,doesnotcontainallcontrols!)

3 6 7 5 2

F L MAX_SIZE-1

7 5 2

F L MAX_SIZE-1

First = List[F]

Last = List[L-1]

Pop_first : { return List[F++] }

Pop_last : { return List[--L] }

Full: return ( L==MAX_SIZE )Empty: F< 0 or F >= L

Page 53: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Circularbuffer

• Acircularbuffer orringbuffer isadatastructure thatusesasingle,fixed-sizebufferasifitwereconnectedend-to-end.Thisstructurelendsitselfeasilytobufferingdatastreams.

Page 54: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

CircularQueue

3 6

FL

First = List[F]

Last = List[ (L-1+MAX_SIZE) % MAX_SIZE ]

Full: return ( (L+1)%MAX_SIZE == F )Empty: F==L

7 5 2

MAX_SIZE-1

Add_to_end( x ) : { List[L]=x ; L= (L+1) % MAX_SIZE ] } // % = modulo

3 6

FL,

7 5 2

MAX_SIZE-1

Page 55: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Stack

• push(x) -- addtoend(addtotop)• pop() -- fetchfromend(top)

• O(1)inallreasonablecasesJ

• LIFO– LastIn,FirstOut

Page 56: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Stackbasedlanguages

• Implementapostfixcalculator– ReversePolishnotation

• 543*2- + => 5+((4*3)-2)

• Verysimpletoparse andinterpret

• FORTH,Postscriptarestack-basedlanguages

Page 57: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Arraybasedstack

• Howtoknowhowbigastackshalleverbe?

• Whenfull,allocatebiggertabledynamically,andcopyallpreviousvaluesthere

• O(n)?

3 6 7 5

3 6 7 5 2

Page 58: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

• Whenfull,create2xbiggertable,copypreviousnelements:

• Afterevery2k insertions,performO(n)copy

• O(n)individualinsertions+• n/2+n/4+n/8…copy-ing• Total:O(n)effort!

Page 59: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Whataboutdeletions?

• whenn=32->33(copy32,insert1)• delete:33->32

– shouldyoudeleteimmediately?– Deleteonlywhenbecomeslessthan1/4thfull

– Havetodeleteatleastn/2todecrease– Havetoaddatleastntoincreasesize– Mostoperations,O(1)effort– ButfewoperationstakeO(n)tocopy– Foranymoperations,O(m)time

Page 60: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Amortizedanalysis

• Analyzethetimecomplexityovertheentire“lifespan” ofthealgorithm

• Someoperationsthatcostmorewillbe“covered”bymanyotheroperationstakingless

Page 61: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

ListsanddictionaryADT…

• Howtomaintainadictionaryusing(linked)lists?

• IskinD?– gothroughallelementsdofD,testifd==kO(n)– Ifsorted:d=first(D);while(d<=k)d=next(D);– onaveragen/2tests…

• Add(k,D)=>insert(k,D)=O(1)orO(n)– testforuniqueness

Page 62: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Arraybasedsortedlist

• isdinD?• BinarysearchinD

low highmid

Page 63: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Binarysearch– recursiveBinarySearch(A[0..N-1],value,low,high){

if (high<low)return -1//notfound

mid=low+((high- low)/2) //Note:not(low+high)/2!!if (A[mid]>value)

return BinarySearch(A,value,low,mid-1)elseif(A[mid]<value)

return BinarySearch(A,value,mid+1,high)else

returnmid//found}

Page 64: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Binarysearch– iterativeBinarySearch(A[0..N-1],value){

low=0;high=N- 1;

while (low<=high){mid=low+((high- low)/2)//Note:not(low+high)/2 !!if (A[mid]>value)

high=mid- 1else if (A[mid]<value)

low=mid+1else

returnmid//found}return -1//notfound

}

Page 65: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Workperformed

• x<=>A[18]?<• x<=>A[9]? >• x<=>A[13]?==

• O(lgn)

1 3618

Page 66: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Sorting

• givenalist,arrangevaluessothatL[1]<=L[2]<=…<=L[n]

• nelements=>n!possibleorderings• OnetestL[i]<=L[j]candividen!to2

– Makeabinarytreeandcalculatethedepth• log(n!)=Ω(nlogn)

• Hence,lowerboundforsortingisΩ(nlogn)– usingcomparisons…

Page 67: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 68: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 69: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Decisiontreemodel

• n!orderings(leaves)• Heightofsuchtree?

Page 70: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Proof:log(n!)=Ω(nlogn)

• log(n!)=logn+log(n-1)+log(n-2)+…log(1)

>=n/2*log(n/2)

=Ω(nlogn)Half of elements are larger than log(n/2)

Page 71: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 72: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Thedivide-and-conquerdesignparadigm

1. Divide theproblem(instance)intosubproblems.

2. Conquer thesubproblems bysolvingthemrecursively.

3. Combine subproblem solutions.

Page 73: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Mergesort

Merge-Sort(A,p,r)if p<r

then q=(p+r)/2 //floorMerge-Sort( A,p,q)Merge-Sort( A,q+1,r)Merge( A,p,q,r)

It was invented by John von Neumann in 1945.

Page 74: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Example

• Applyingthemergesortalgorithm:

Page 75: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Mergeoftwolists:Θ(n)

A,B– liststobemergedL=newlist;//emptywhile(Anotemptyand Bnotempty)

ifA.first()<=B.first()thenappend(L,A.first());A=rest(A);elseappend(L,B.first());B=rest(B);

append(L,A); //allremainingelementsofAappend(L,B); //allremainingelementsofBreturnL

Page 76: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Wikipedia/viz.Va

lue

Pos in array

Page 77: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Run-timeAnalysisofMergeSort

• Thus,thetimerequiredtosortanarrayofsizen > 1 is:– thetimerequiredtosortthefirsthalf,– thetimerequiredtosortthesecondhalf,and– thetimerequiredtomergethetwolists

• Thatis:

( )îíì

>+=

=1)(T21)1(

)T(2 nn

nn n Θ

Θ

Page 78: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 79: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 80: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Mergesort

• Worstcase,averagecase,bestcase…Θ(nlogn)

• Commonwisdom:– Requires additionalspaceformerging(incaseofarrays)

• Homework*:developin-placemergeoftwolistsimplementedinarrays/comparespeed/

a b

a bL[a] <= L[b] a b

L[a] > L[b]

Page 81: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Quicksort

• ProposedbyC.A.R.Hoarein1962.• Divide-and-conqueralgorithm.• Sorts“inplace”(likeinsertionsort,butnotlikemergesort).

• Verypractical(withtuning).

Page 82: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 83: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Quicksort

Page 84: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 85: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Partitioningversion2

pivot=A[R];//i=L;j=R-1;while(i<=j)while (A[i]<pivot)i++;//willstopatpivotlatestwhile (i<=jand A[j]>=pivot)j-- ;if (i<j){swap(A[i],A[j]);i++;j-- }

A[R]=A[i];A[i]=pivot;returni;

L R

L R <= pivot

> pivot

i j

L Rij

L Rij

pivot

Page 86: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Wikipedia/“video”

Page 87: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 88: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 89: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 90: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 91: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 92: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

ChoiceofpivotinQuicksort

• Selectmedianofthree…

• Selectrandom– opponentcannotchoosethewinningstrategyagainstyou!

Page 93: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-046JFall-2005/VideoLectures/detail/embed04.htm

Page 94: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Randompivot

Selectpivot randomlyfromtheregion(blue)andswapwithlastposition

Selectpivotasamedianof3[ormore]randomvaluesfromregion

Applynon-recursivesortforarraylessthan10-20

L R

L R

<= pivot

> pivoti j

L Rij

Page 95: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 96: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 97: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 98: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 99: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 100: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 101: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 102: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 103: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 104: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 105: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 106: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Alternativematerials

• Quicksortaveragecaseanalysishttp://eid.ee/10z

• https://secweb.cs.odu.edu/~zeil/cs361/web/website/Lectures/quick/pages/ar01s05.html

• http://eid.ee/10y - MITOpenCourseware-Asymptoticnotation,Recurrences,SubstitutonMasterMethod

Page 107: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

• 2-pivotversionofQuicksort– (splitin3regions!)

Page 108: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 109: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

f(n)

f(n/b) f(n/b) f(n/b)

Page 110: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

f(n)

f(n/b) f(n/b) f(n/b)

n vs f(n)log b a

Page 111: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 112: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 113: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 114: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 115: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 116: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 117: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 118: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 119: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 120: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 121: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 122: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 123: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Backtosorting

Page 124: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

WecansortinO(nlogn)

• Isthatthebestwecando?

• Remember:usingcomparisons<,>,<=,>=wecannotdobetterthanO(nlogn)

Page 125: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Howfastcanwesortnintegers?

• Sortpeoplebytheirsex?(F/M,0/1)

• Sortpeoplebyyearofbirth?

Page 126: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 127: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 128: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 129: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 130: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 131: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 132: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 133: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 134: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 135: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 136: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Radixsort

Radix-Sort(A,d)1. for i=1to d/*leastsignificanttomostsignificant*/

2. useastablesorttosortAondigiti

Page 137: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 138: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 139: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 140: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 141: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 142: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 143: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 144: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Radixsortusinglists(stable)bbabbb adb aad aac ccc ccb aba cca

Page 145: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Radixsortusinglists(stable)

a

b

c

d

bba aba cca

bbb adb ccb

aac ccc

aad

1.

bbabbb adb aad aac ccc ccb aba cca

Page 146: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Radixsortusinglists(stable)

a

b

c

d

bba aba cca

bbb adb ccb

aac ccc

aad

a

b

c

d

cca

bbb

adb

ccb

aac

ccc

aad

bba aba

a

b

c

d

cca

bbb

adb

ccb

aac

ccc

aad

bba

aba

1. 2.

3.

bbabbb adb aad aac ccc ccb aba cca

Page 147: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Whynotfromlefttoright?

• Swap‘0’ withfirst‘1’• Idea1:recursivelysortfirstandsecondhalf

– Exercise?

01011001001010111100010010010010010100100101010000010000

01011000010010111100010010011001010100100101010000010000

01011000010010010100010010011001010100100111110000010000

01011000010010010100000100001001010100100111110001001001

Page 148: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Bitwisesortlefttoright

• Idea2:– swapelementsonlyiftheprefixesmatch…

– Forallbitsfrommostsignificant• advancewhen0• when1->lookfornext0

– ifprefixmatches,swap– otherwisekeepadvancingon0’sandlookfornext1

Page 149: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Bitwiselefttorightsort/*Historicalsorting– wasusedinUniv.ofTartuusingassembler….*//*Cimplementation– JaakVilo,1989*/

voidbitwisesort(SORTTYPE*ARRAY,intsize){

inti,j,tmp,nrbits;

registerSORTTYPEmask,curbit,group;

nrbits=sizeof(SORTTYPE)*8;

curbit=1<<(nrbits-1);/*setmostsignificantbit1*/mask=0; /*maskofthealreadysortedarea */

Jaak Vilo, Univ. of Tartu

Page 150: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

do{/*Foreachbit*/i=0;

new_mask:for(;(i<size)&&(!(ARRAY[i]&curbit));i++) ; /*Advancewhilebit==0*/if(i>=size)gotoarray_end;group=ARRAY[i]&mask; /*Savecurrentprefixsnapshot*/

j=i; /*memorize locationof1*/for(;;) {

if(++i>=size)gotoarray_end; /* reachedendofarray*/if((ARRAY[i]&mask)!=group)goto new_mask ;/*newprefix*/

if(!(ARRAY[i]&curbit)) {/*bitis0– needtoswapwithpreviouslocationof1,A[i]ó A[j]*/tmp =ARRAY[i]; ARRAY[i]=ARRAY[j]; ARRAY[j]=tmp;j+=1; /*swapandincreasejtothe

nextpossible1*/}

}array_end:

mask=mask|curbit; /*areaundermaskisnowsorted*/curbit>>=1; /*nextbit */

}while(curbit); /*untilallbitshavebeensorted… */}

Jaak Vilo, Univ. of Tartu

Page 151: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Bitwisefromlefttoright

• Swap‘0’ withfirst‘1’

00100000010010010100001011001001010100100110010011111000

Jaak Vilo, Univ. of Tartu

Page 152: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Bucketsort

• Assumeuniformdistribution

• AllocateO(n)buckets

• Assigneachvaluetopre-assignedbucket

Page 153: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

.78

.17

.39

.26

.72

.94

.21

.12

.23

.68

/

/

/

1

0

Sortsmallbucketswithinsertionsort

3

2

5

4

7

6

9

8

.12 .17

.21 .23 .26

.39

.68

.72 .78

.94

Page 154: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

http://sortbenchmark.org/

• Thesortinputrecordsmustbe100bytesinlength,withthefirst10bytesbeingarandomkey

• Minutesort– maxamountsortedin1minute– 116GBin58.7sec(JimWyllie,IBMResearch)– 40-node80-Itaniumcluster,SANarrayof2,520disks

• 2009,500GBHadoop 1406nodesx(2QuadcoreXeons,8GBmemory,4SATA)OwenO'Malley andArunMurthyYahooInc.

• Performance/PriceSortandPennySort

Page 155: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 156: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 157: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 158: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 159: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 160: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

SortBenchmark• http://sortbenchmark.org/• SortBenchmarkHomePage• Wehaveanewbenchmarkcallednew GraySort,new inmemoryofthefatherofthesort

benchmarks,JimGray.ItreplacesTeraByteSortwhichisnowretired.• Unlike2010,wewillnotbeacceptingearlyentriesforthe2011year.Thedeadlinefor

submittingentriesisApril1,2011.– Allhardwareusedmustbeoff-the-shelfandunmodified.– ForDaytonaclustersortswhereinputsamplingisusedtodeterminetheoutputpartitionboundaries,theinput

samplingmustbedoneevenlyacrossallinputpartitions.

NewrulesforGraySort:• Theinputfilesizeisnowminimum~100TBor1Trecords.Entrieswithlargerinputsizesalso

qualify.• ThewinnerwillhavethefastestSortedRecs/Min.• Wenowprovideanewinputgeneratorthatworksinparallelandgeneratesbinarydata.See

below.• FortheDaytonacategory,wehavetwonewrequirements.(1)Thesortmustrun

continuously(repeatedly)foraminimum1hour.(Thisisaminimumreliabilityrequirement).(2)Thesystemcannotoverwritetheinputfile.

Page 161: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Orderstatistics

• Minimum– thesmallestvalue• Maximum– thelargestvalue• Ingenerali’thvalue.• Findthemedianofthevaluesinthearray• MedianinsortedarrayA:

– nisoddA[(n+1)/2]– niseven– A[(n+1)/2]orA[(n+1)/2]

Page 162: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Orderstatistics

• Input:AsetAofnnumbersandi,1≤i≤n• Output:xfromAthatislargerthanexactlyi-1elementsofA

Page 163: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Q:Findi’thvalueinunsorteddata

A. O(n)B. O(nloglogn)C. O(nlogn)D. O(nlog2 n)

Page 164: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Minimum

Minimum(A)1 min=A[1]2 fori=2tolength(A)3 ifmin>A[i]4 thenmin=A[i]5 returnmin

n-1comparisons.

Page 165: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Minandmaxtogether

• compareeverytwoelementsA[i],A[i+1]• Comparelargeragainstcurrentmax• Smalleragainstcurrentmin

• 3n/2

Page 166: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

SelectioninexpectedO(n)

Randomised-select(A,p,r,i)if p=rthen return A[p]q=Randomised-Partition(A,p,r)k=q– p+1 //nrofelementsinsubarrif i<=kthen return Randomised-Partition(A,p,q,i)else return Randomised-Partition(A,q+1,r,i-k)

Page 167: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Conclusion

• SortingingeneralO(nlogn)• Quicksortisrathergood

• Lineartimesortingisachievablewhenonedoesnotassumeonlydirectcomparisons

• Findi’thvalue– expectedO(n)

• Findi’thvalue:worstcaseO(n)– seeCLRS

Page 168: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Ok…

• lists– aversatiledatastructureforvariouspurposes

• Sorting– atypicalalgorithm(manyways)• Whichsortingmethodsforarray/list?

• Array:mostoftheimportant(e.g.update)tasksseemtobeO(n),whichisbad

Page 169: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Q:searchforavalueXinlinkedlist?

A. O(1)

B. O(logn)

C. O(n)

Page 170: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Canwesearchfasterinlinkedlists?

• Whysortlinkedlistsifsearch anywayO(n)?

• Linkedlists:– whatisthe“mid-point” ofanysublist?– Therefore,binarysearchcannotbeused…

• Orcanit?

Page 171: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

SkipList

Page 172: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Skiplists

• Buildseverallistsatdifferent“skip” steps

• O(n)list• Level1:~n/2• Level2:~n/4• …• Levellogn~2-3elements…

Page 173: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

9/2/165:00PM SkipLists 173

SkipLists

+¥-¥

S0

S1

S2

S3

+¥-¥ 10 362315

+¥-¥ 15

+¥-¥ 2315

Page 174: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

SkipList

typedefstructnodeStructure*node;typedefstructnodeStructure{keyTypekey;valueTypevalue;nodeforward[1];/*variablesizedarrayof forwardpointers*/

};

Page 175: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

9/2/165:00PM SkipLists 175

WhatisaSkipList• Askiplist forasetS ofdistinct(key,element)itemsisaseriesoflists

S0, S1 , … , Sh suchthat– EachlistSi containsthespecialkeys+¥ and-¥– ListS0 containsthekeysofS innondecreasingorder– Eachlistisasubsequenceofthepreviousone,i.e.,

S0 Ê S1 Ê … Ê Sh– ListSh containsonlythetwospecialkeys

• WeshowhowtouseaskiplisttoimplementthedictionaryADT

56 64 78 +¥31 34 44-¥ 12 23 26

+¥-¥

+¥31-¥

64 +¥31 34-¥ 23

S0

S1

S2

S3

Page 176: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Illustrationoflists

-inf inf25 30 47 99173

KeyRight[ .. ] - right links in arrayLeft[ .. ] - left links in array, array size – how high is the list

Page 177: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

9/2/165:00PM SkipLists 177

Search• Wesearchforakeyx inaaskiplistasfollows:

– Westartatthefirstpositionofthetoplist– Atthecurrentpositionp,wecomparex withy ¬ key(after(p))

x = y:wereturnelement(after(p))x > y:we“scanforward”x < y:we“dropdown”

– Ifwetrytodropdownpastthebottomlist,wereturnNO_SUCH_KEY• Example:searchfor78

+¥-¥

S0

S1

S2

S3

+¥31-¥

64 +¥31 34-¥ 23

56 64 78 +¥31 34 44-¥ 12 23 26

Page 178: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

9/2/165:00PM SkipLists 178

RandomizedAlgorithms• Arandomizedalgorithm

performscointosses(i.e.,usesrandombits)tocontrolitsexecution

• Itcontainsstatementsofthetype

b ¬ random()if b = 0

do A …else { b = 1}

do B … • Itsrunningtimedependsonthe

outcomesofthecointosses

• Weanalyzetheexpectedrunningtimeofarandomizedalgorithmunderthefollowingassumptions– thecoinsareunbiased,and– thecointossesare

independent• Theworst-caserunningtimeof

arandomizedalgorithmisoftenlargebuthasverylowprobability(e.g.,itoccurswhenallthecointossesgive“heads”)

• Weusearandomizedalgorithmtoinsertitemsintoaskiplist

Page 179: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

9/2/165:00PM SkipLists 179

• Toinsertanitem(x, o) intoaskiplist,weusearandomizedalgorithm:– Werepeatedlytossacoinuntilwegettails,andwedenotewithi the

numberoftimesthecoincameupheads– Ifi ³ h,weaddtotheskiplistnewlistsSh+1, … , Si +1,eachcontaining

onlythetwospecialkeys– Wesearchforx intheskiplistandfindthepositionsp0, p1 , …, pi ofthe

itemswithlargestkeylessthanx ineachlistS0, S1, … , Si– Forj ¬ 0, …, i,weinsertitem(x, o) intolistSj afterpositionpj

• Example:insertkey15,withi = 2

Insertion

+¥-¥ 10 36

+¥-¥

23

23 +¥-¥

S0

S1

S2

+¥-¥

S0

S1

S2

S3

+¥-¥ 10 362315

+¥-¥ 15

+¥-¥ 2315p0

p1

p2

Page 180: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

9/2/165:00PM SkipLists 180

Deletion

• Toremoveanitemwithkeyx fromaskiplist,weproceedasfollows:– Wesearchforx intheskiplistandfindthepositionsp0, p1 , …, pi ofthe

itemswithkeyx,wherepositionpj isinlistSj

– Weremovepositionsp0, p1 , …, pi fromthelistsS0, S1, … , Si

– Weremoveallbutonelistcontainingonlythetwospecialkeys• Example:removekey34

-¥ +¥4512

-¥ +¥

23

23-¥ +¥

S0

S1

S2

-¥ +¥

S0

S1

S2

S3

-¥ +¥4512 23 34

-¥ +¥34

-¥ +¥23 34p0

p1

p2

Page 181: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

9/2/165:00PM SkipLists 181

Implementationv2

• Wecanimplementaskiplistwithquad-nodes

• Aquad-nodestores:– item– linktothenodebefore– linktothenodeafter– linktothenodebelow– linktothenodeafter

• Also,wedefinespecialkeysPLUS_INFandMINUS_INF,andwemodifythekeycomparatortohandlethem

x

quad-node

Page 182: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

9/2/165:00PM SkipLists 182

SpaceUsage

• Thespaceusedbyaskiplistdependsontherandombitsusedbyeachinvocationoftheinsertionalgorithm

• Weusethefollowingtwobasicprobabilisticfacts:Fact1: Theprobabilityofgettingi

consecutiveheadswhenflippingacoinis1/2i

Fact2: Ifeachofn itemsispresentinasetwithprobabilityp,theexpectedsizeofthesetisnp

• Consideraskiplistwithn items– ByFact1,weinsertanitemin

listSi withprobability1/2i

– ByFact2,theexpectedsizeoflistSi isn/2i

• Theexpectednumberofnodesusedbytheskiplistis

nnn h

ii

h

ii 2

21

2 00<= åå

==

Thus, the expected space usage of a skip list with nitems is O(n)

Page 183: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

9/2/165:00PM SkipLists 183

Height

• Therunningtimeofthesearchaninsertionalgorithmsisaffectedbytheheighth oftheskiplist

• Weshowthatwithhighprobability,askiplistwithnitemshasheightO(log n)

• Weusethefollowingadditionalprobabilisticfact:Fact3: Ifeachofn eventshas

probabilityp,theprobabilitythatatleastoneeventoccursisatmostnp

• Consideraskiplistwithn items– ByFact1,weinsertaniteminlist

Si withprobability1/2i

– ByFact3,theprobabilitythatlistSi hasatleastoneitemisatmostn/2i

• Bypickingi = 3log n,wehavethattheprobabilitythatS3log nhasatleastoneitemisatmost

n/23log n = n/n3 = 1/n2

• Thusaskiplistwithn itemshasheightatmost3log n withprobabilityatleast1 - 1/n2

Page 184: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

9/2/165:00PM SkipLists 184

SearchandUpdateTimes• Thesearchtimeinaskiplistis

proportionalto– thenumberofdrop-downsteps,

plus– thenumberofscan-forward

steps• Thedrop-downstepsare

boundedbytheheightoftheskiplistandthusareO(log n) withhighprobability

• Toanalyzethescan-forwardsteps,weuseyetanotherprobabilisticfact:Fact4:Theexpectednumberof

cointossesrequiredinordertogettailsis2

• Whenwescanforwardinalist,thedestinationkeydoesnotbelongtoahigherlist– Ascan-forwardstepisassociated

withaformercointossthatgavetails

• ByFact4,ineachlisttheexpectednumberofscan-forwardstepsis2

• Thus,theexpectednumberofscan-forwardstepsisO(log n)

• WeconcludethatasearchinaskiplisttakesO(log n) expectedtime

• Theanalysisofinsertionanddeletiongivessimilarresults

Page 185: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

9/2/165:00PM SkipLists 185

Summary• Askiplistisadatastructure

fordictionariesthatusesarandomizedinsertionalgorithm

• Inaskiplistwithn items– Theexpectedspaceusedis

O(n)– Theexpectedsearch,

insertionanddeletiontimeisO(log n)

• Usingamorecomplexprobabilisticanalysis,onecanshowthattheseperformanceboundsalsoholdwithhighprobability

• Skiplistsarefastandsimpletoimplementinpractice

Page 186: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1
Page 187: Advanced Algorithmics (6EAP) - ut · Advanced Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2016 Fall Jaak Vilo 1

Conclusions

• Abstractdatatypeshideimplementations• ImportantisthefunctionalityoftheADT• Datastructuresandalgorithms determinethespeedoftheoperationsondata

• Lineardatastructuresprovidegoodversatility• Sorting– amosttypicalneed/algorithm• SortinginO(nlogn)MergeSort,Quicksort• SolvingRecurrences– meanstoanalyse• Skiplists– logn randomised datastructure