The.Algorithm.Design.Manual.Springer-Verlag.1998
The.Algorithm.Design.Manual.Springer-Verlag.1998 The.Algorithm.Design.Manual.Springer-Verlag.1998
Job Scheduling An even more general formulation seeks critical paths in networks where certain jobs are restricted to certain people. Such networks are known as disjunctive networks. Finding critical paths on such networks is more complicated than CPM/PERT, but implementations are described below. In any sufficiently large and sufficiently real scheduling application, there will be combinations of constraints that are difficult or impossible to model using these techniques. There are two reasonable ways to deal with such problems. First, we can ignore enough constraints that the problem reduces to one of the types that we have described here, solve it, and then see how bad it is using the other constraints. Perhaps the schedule can be easily modified by hand to satisfy constraints like keeping Joe and Bob apart so they can't kill each other. Another approach is to formulate your scheduling problem via linear-integer programming (see Section ) in all its complexity. This method can be better only if you really know enough about your desired schedule to formulate the right linear program, and if you have the time to wait for the program to give you the solution. I would start out with something simpler and see what happens first. Another fundamental scheduling problem takes a set of jobs without precedence constraints and assign them to identical machines so as to minimize the total elapsed time. Consider a copy shop with k Xerox machines and a stack of jobs to finish by the end of the day. Such tasks are called job-shop scheduling. They can be modeled as bin-packing problems (see Section ), where each job is assigned a number equal to the number of hours it will take and each machine is represented by a bin with space equal to the number of hours in a day. More sophisticated variations of job-shop scheduling provide each task with allowable start and required finishing times. Effective heuristics are known, based on sorting the tasks by size and finishing time. We refer the reader to the references for more information. Note that these scheduling problems become hard only when the tasks cannot be broken up onto multiple machines or interrupted (preempted) and then rescheduled. If your application has these degrees of freedom, you should exploit them. Implementations: Pascal implementations of Balas's algorithm for disjunctive network scheduling and Hu's algorithm for assigning jobs to processors with precedence constraints appear in [SDK83]. See Section . Algorithm 520 [WBCS77] of the Collected Algorithms of the ACM is a Fortran code for multiple- resource network scheduling. It is available from Netlib (see Section ). Notes: The literature on scheduling algorithms is a vast one. For a more detailed survey of the field, we refer the reader to [Cof76, LLK83]. Good expositions on CPM/PERT include [Eve79a, Law76, PGD82, SDK83]. Good expositions on job- file:///E|/BOOK/BOOK4/NODE156.HTM (3 of 4) [19/1/2003 1:30:50]
Job Scheduling shop scheduling include [AC91, SDK83]. Related Problems: Topological sorting (see page ), matching (see page ), vertex coloring (see page ), edge coloring (see page ), bin packing (see page ). Next: Satisfiability Up: Combinatorial Problems Previous: Calendrical Calculations Algorithms Mon Jun 2 23:33:50 EDT 1997 file:///E|/BOOK/BOOK4/NODE156.HTM (4 of 4) [19/1/2003 1:30:50]
- Page 407 and 408: Factoring and Primality Testing Alg
- Page 409 and 410: Arbitrary-Precision Arithmetic If y
- Page 411 and 412: Arbitrary-Precision Arithmetic PARI
- Page 413 and 414: Knapsack Problem Next: Discrete Fou
- Page 415 and 416: Knapsack Problem is a subset of S'
- Page 417 and 418: Discrete Fourier Transform Next: Co
- Page 419 and 420: Discrete Fourier Transform an algor
- Page 421 and 422: Combinatorial Problems Next: Sortin
- Page 423 and 424: Sorting Next: Searching Up: Combina
- Page 425 and 426: Sorting The simplest approach to ex
- Page 427 and 428: Sorting operations, implying an sor
- Page 429 and 430: Searching large performance improve
- Page 431 and 432: Searching Notes: Mehlhorn and Tsaka
- Page 433 and 434: Median and Selection followed by fi
- Page 435 and 436: Generating Permutations Next: Gener
- Page 437 and 438: Generating Permutations The rank/un
- Page 439 and 440: Generating Permutations generating
- Page 441 and 442: Generating Subsets look right when
- Page 443 and 444: Generating Subsets above for detail
- Page 445 and 446: Generating Partitions Although the
- Page 447 and 448: Generating Partitions Two related c
- Page 449 and 450: Generating Graphs generate: ● Do
- Page 451 and 452: Generating Graphs Combinatorica [Sk
- Page 453 and 454: Calendrical Calculations Next: Job
- Page 455 and 456: Calendrical Calculations Gregorian,
- Page 457: Job Scheduling ● To assign a set
- Page 461 and 462: Satisfiability logic, and automatic
- Page 463 and 464: Satisfiability Next: Graph Problems
- Page 465 and 466: Graph Problems: Polynomial-Time rec
- Page 467 and 468: Connected Components Testing the co
- Page 469 and 470: Connected Components discussing gra
- Page 471 and 472: Topological Sorting contradiction t
- Page 473 and 474: Minimum Spanning Tree Next: Shortes
- Page 475 and 476: Minimum Spanning Tree help you sort
- Page 477 and 478: Shortest Path Next: Transitive Clos
- Page 479 and 480: Shortest Path easier to program tha
- Page 481 and 482: Shortest Path Related Problems: Net
- Page 483 and 484: Transitive Closure and Reduction
- Page 485 and 486: Transitive Closure and Reduction Al
- Page 487 and 488: Matching augmenting paths and stopp
- Page 489 and 490: Matching Combinatorica [Ski90] prov
- Page 491 and 492: Eulerian Cycle / Chinese Postman ar
- Page 493 and 494: Eulerian Cycle / Chinese Postman Ne
- Page 495 and 496: Edge and Vertex Connectivity Severa
- Page 497 and 498: Edge and Vertex Connectivity Next:
- Page 499 and 500: Network Flow programming model for
- Page 501 and 502: Network Flow Combinatorica [Ski90]
- Page 503 and 504: Drawing Graphs Nicely vertices are
- Page 505 and 506: Drawing Graphs Nicely labs.com/orgs
- Page 507 and 508: Drawing Trees such as the map of th
Job Scheduling<br />
An even more general formulation seeks critical paths in networks where certain jobs are restricted to<br />
certain people. Such networks are known as disjunctive networks. Finding critical paths on such<br />
networks is more complicated than CPM/PERT, but implementations are described below.<br />
In any sufficiently large and sufficiently real scheduling application, there will be combinations of<br />
constraints that are difficult or impossible to model using these techniques. <strong>The</strong>re are two reasonable<br />
ways to deal with such problems. First, we can ignore enough constraints that the problem reduces to one<br />
of the types that we have described here, solve it, and then see how bad it is using the other constraints.<br />
Perhaps the schedule can be easily modified by hand to satisfy constraints like keeping Joe and Bob apart<br />
so they can't kill each other. Another approach is to formulate your scheduling problem via linear-integer<br />
programming (see Section ) in all its complexity. This method can be better only if you really know<br />
enough about your desired schedule to formulate the right linear program, and if you have the time to<br />
wait for the program to give you the solution. I would start out with something simpler and see what<br />
happens first.<br />
Another fundamental scheduling problem takes a set of jobs without precedence constraints and assign<br />
them to identical machines so as to minimize the total elapsed time. Consider a copy shop with k Xerox<br />
machines and a stack of jobs to finish by the end of the day. Such tasks are called job-shop scheduling.<br />
<strong>The</strong>y can be modeled as bin-packing problems (see Section ), where each job is assigned a number<br />
equal to the number of hours it will take and each machine is represented by a bin with space equal to the<br />
number of hours in a day.<br />
More sophisticated variations of job-shop scheduling provide each task with allowable start and required<br />
finishing times. Effective heuristics are known, based on sorting the tasks by size and finishing time. We<br />
refer the reader to the references for more information. Note that these scheduling problems become hard<br />
only when the tasks cannot be broken up onto multiple machines or interrupted (preempted) and then<br />
rescheduled. If your application has these degrees of freedom, you should exploit them.<br />
Implementations: Pascal implementations of Balas's algorithm for disjunctive network scheduling and<br />
Hu's algorithm for assigning jobs to processors with precedence constraints appear in [SDK83]. See<br />
Section .<br />
<strong>Algorithm</strong> 520 [WBCS77] of the Collected <strong>Algorithm</strong>s of the ACM is a Fortran code for multiple-<br />
resource network scheduling. It is available from Netlib (see Section ).<br />
Notes: <strong>The</strong> literature on scheduling algorithms is a vast one. For a more detailed survey of the field, we<br />
refer the reader to [Cof76, LLK83].<br />
Good expositions on CPM/PERT include [Eve79a, Law76, PGD82, SDK83]. Good expositions on job-<br />
file:///E|/BOOK/BOOK4/NODE156.HTM (3 of 4) [19/1/2003 1:30:50]