Binary search trees (BSTs) and heaps are perhaps the simplest implementations of the dictionary and the priority queue data types. They are among the most extensively studied structures in computer science, yet, many basic questions about them remain open. What is the best strategy for updating a BST in response to queries? Is there a single strategy that is optimal for every possible scenario? Are self-adjusting trees ("splay trees", Sleator, Tarjan, 1983) optimal? In which cases can we improve upon the logarithmic worst-case cost per operation?

Our understanding of heaps is even more limited. Fibonacci heaps (and their relatives) are theoretically optimal in a worst-case sense, but they perform operations outside the "pure" comparison-based heap model (in addition to being complicated in practice). Is there a simple, "self-adjusting" alternative to Fibonacci heaps? Is there, by analogy to BSTs, a heap that can adapt to regularities in the input? Are the two problems related?

In my talk I will present some old and new results pertaining to this family of questions.

Dec 03, 2018 | 02:15 PM

Freie Universität Berlin

Institut für Informatik

Takustr. 9

14195 Berlin

Room 005 (Ground Floor)