I am a theoretical computer scientist, meaning that I like to prove things about computational problems and the algorithms used to solve them. (I have also done some empirical work on processor allocation, a problem that does not lend itself to theoretical analysis.) My research has primarily focused on scheduling problems, but I like other problems as well and have publications in the following areas:
For a chronological listing of my publications, check out my list of publications.
In classical scheduling problems, the algorithm is given a
list of jobs to complete and must decide when to run them for the best
user experience.
(Although scheduling problems are nearly always phrased in terms
of "jobs" run on "machines", the results apply equally well to
other applications, like people scheduling errands.)
In general, the jobs arrive over time so that not all of them are
available at the start of the problem.
The metric I am most interested in is total flow, which is the sum
of job completion times minus the sum of job arrival times.
(It is useful to think of the flow of a job as the time between its
arrival and completion.
Then, the total flow is the sum of the individual job flows.)
Minimizing this metric is exactly minimizing the sum of the times that
users are waiting for their jobs.
My very first theoretical result was to show that a natural algorithm
is the best possible online algorithm.
(An algorithm is online if makes decisions as the input
arrives rather than receiving the input all at once the way an
offline algorithm does.)
More recently, I've been looking at variations of scheduling that
require choices other than when to schedule each job.
For example, one recent result addresses scheduling with
rejections, where some of the jobs can be rejected at a cost.
The metric is then total flow plus the cost of rejected jobs.
One example of this is managing a "TO DO" list where jobs can either
be scheduled or delegated to someone else.
In this example, each item on the TO DO list has two parameters, how
long it will take you to complete and how long it will take someone
else.
You can only work on one task at a time, but work on the tasks that are
delegated to someone else proceed at the same time.
(Think of having a lot of coworkers that can work on delegated tasks.)
Thus, delegating some tasks may reduce the sum of completion times even
when each task takes you less time than your coworkers.
I give both algorithms and hardness results, mostly for the special case
when all jobs have unit length.
Another situation where the scheduling algorithm needs to make another
type of choice is power-aware scheduling.
Consider the problem of scheduling a laptop with a limited battery
capacity.
The processor can run at different speeds and it uses more energy the
faster it runs.
My most recent work has considered the question of how to schedule
such a processor to get the best possible performance out of the
laptop's limited battery capacity.
Processor allocation is about answering the question "Which free
processors should be assigned to the next job?" for jobs run on
supercomputers.
This question is separate from the question of when to run jobs; the
allocator is given a job with instructions to put it on the machine
immediately.
Intuitively, the best allocation will use processors that are close
together since this shortens the time necessary to send messages
between processors assigned to the same job.
We give several algorithms based on this intuition and evaluate them
both theoretically and with experiments.
I began this work while an intern at Sandia National Labs.
The allocator has also been licensed to Cray and is in use on a number
of supercomputers around the world.
Admission control problems involve choosing a subset of a large number
of requests to satisfy with limited resources.
The prototypical example is a network receiving requests for dedicated
bandwidth between pairs of nodes; each link has limited bandwidth so
some of the requests might need to be rejected.
The quality of an admission control algorithm can be measured by how
well it maximizes the value of accepted requests or by how well it
minimizes the value of rejected requests.
Note that an optimal solution gives the best possible value for both
criteria, but an algorithm that does well by one criteria may not do
well according to the other.
For example, suppose algorithm A always accepts at least half as many
requests as the optimal solution while algorithm R always rejects no
more than twice as many requests as the optimal solution.
Which should you use?
The answer depends on how well the optimal solution does.
On one hand, if the optimal solution accepts 98% of the requests
(rejecting 2%), you should use algorithm R since it will accept at
least 96% of the requests while algorithm A might accept only 49% of
them.
On the other hand, if the optimal solution accepts only 50% of the
requests (rejecting 50% of them), then you should use algorithm A
since it will accept at least 25% of the requests while algorithm R
might reject them all.
My work involves giving a way to combine the different
types of algorithms.
We give a procedure whose input is one algorithm with guaranteed
quality with respect to acceptances and one with guaranteed quality
with respect to rejections.
The procedure gives algorithm that provides a guarantee with respect
to both measures simultaneously.
Graph theory studies graphs, objects consisting of vertices and edges,
where each edge joins a pair of vertices.
Algorithmic graph theory studies the design of algorithms to determine
whether a graph has some desired property.
One example of my work in this area is graph pebbling, which
models moving resources around in a way that consumes
some of them.
Think of delivering gasoline with a truck; the further the truck
travels to its destination, the less gas it delivers upon arrival.
(Graph pebbling was developed to provide tools for problems in number
theory, but my interest in it comes entirely from this idea of
strategies for moving resources.)
The resources are modeled with pebbles placed on the vertices of a
graph.
A pebbling move takes two pebbles off some vertex and places one on a
neighbor of that vertex.
Basic questions in the field are "How many pebbles must be placed on a
graph so that a pebble can reach any vertex?"
and
"How many pebbles guarantee that a
pebble can reach any vertex from any
arrangement?".
For the first question, we give a number of bounds based on the
graph's girth and minimum degree.
For the second question, we give short proofs of some prior results on
paths, cycles, trees, and hypercubes, plus an algorithm to compute the
value for a tree.
For an overview of other results in this relatively new field, check out the
survey
maintained by Glenn Hurlbert.
More recently, I worked on a problem we call parity-edge
coloring.
This problem aims to assign colors to edges so that
every path has some color appearing an odd number of times.
The original motivation was finding embeddings in the hypercube, but
we quickly found that the problem has interesting mathematical
structure in its own right.
In particularly, we believe that the number of colors required to
parity-edge color Kn, the complete graph on n
vertices, is one less than n rounded to the next highest power
of 2, i.e. 2ceil(lg n)-1.
We introduce this parameter and prove some properties of it, including
that 2ceil(lg n)-1 is the correct value for a slight
variation on the problem.
In addition, I have a minor result on distance-2 edge coloring a
graph.
This means assigning colors to the edges of a graph so that no
adjacent edges are assigned the same color and no edge is adjacent
to a pair of edges with the same color.
(This is also called strong edge coloring.)
We show that finding a coloring using the minimum number of colors is
NP-hard even on a restricted class of graphs.
(NP-hardness means that it is unlikely that large instances of the
problem can be solved in a reasonable amount of time.)
Scheduling
Information Processing Letters 90(5): 233-238, 2004.
Master's thesis,
University of Illinois at Urbana-Champaign, December 2002.
Proceedings of the 2nd
Multidisciplinary
International Conference on Scheduling: Theory & Applications
(MISTA), pp. 562-572, 2005.
Proceedings of the 18th ACM
Symposium on Parallelism in
Algorithms and Architectures (SPAA),
pp. 190-196, 2006.
arXiv:cs.DS/0605126
Written with Nikhil Bansal, Ho-Leung Chan, and Kirk Pruhs.
Proceedings of the 8th
Latin American Theoretical Infomatics Symposium (LATIN),
volume 4957 of LNCS, pp. 240-251, 2008.
Processor allocation
Written with Michael A. Bender, Erik D. Demaine, Sandor P. Fekete,
Vitus J. Leung, Henk Meijer, and Cynthia A. Phillips.
Algorithmica 50(2): 279-298, 2008.
Proceedings of the 9th
Workshop on Algorithms and Data Structures
(WADS), volume 3608 of LNCS, pp. 169-181, 2005.
arXiv:cs.DS/0407058
Written with Vitus J. Leung and Jens Mache.
Sandia Technical Report SAND2003-4522, January 2004.
Proceedings of
3rd
International Workshop on Performance Modeling, Evaluation, and
Optimization of Parallel and Distributed Systems (PMEO-PDS), 2004.
(No page number because the proceedings were distributed on CD.)
Written with Vitus J. Leung, Esther M. Arkin, Michael A. Bender, Jeanette
Johnston, Alok Lal, Joseph S. B. Mitchell, Cynthia Phillips, and Steven S. Seiden
Sandia Technical Report SAND2002-1488, July 2002.
Proceedings of the 4th IEEE International
Conference on Cluster Computing, pp. 296-304, 2002.
Admission control
Written with Yossi Azar, Avrim Blum, and Yishay Mansour.
Theory of Computing,
volume 1, pp. 105-117, 2005.
Combines "Improved combination of online algorithms for acceptance and rejection",
written with Yishay Mansour, and another paper to which I did not
contribute.
Algorithmic questions in graph theory
Written with Erin W. Chambers, Daniel Cranston, Kevin Milans, and
Douglas B. West.
Journal of Graph Theory
57(3):215-238, 2008.
arXiv:math.CO/0510621
Written with Kevin Milans, Douglas B. West, and Hehui Wu.
Congressus Numerantium 187(2007), 193-213.
Written with Jeff Erickson and Shripad Thite.
Unpublished note, 2005.
arXiv:cs.DM/0509100
Return to David Bunde's home page