Generating hash function from given hash table?

99 Views Asked by At

I need help with understanding the following problem:

In a factory, machines are making cars (1-n) along the production line. One machine is making one part on the existing construction (part 1 is made by machine 1,...). Installation order of some parts is not important, but some parts have to be installed before others. Engineers have put together a dependence list for car parts as a table:

enter image description here

where the first column represents parts (1-8), and the second column represents preconditions for installment of each part. That is the list of parts (second column) whose installment must be done before the installment of current part (first column).

For each given list (second column), find the order of machines along the production line such that the manufacturing process of a car is done without interruptions, if such order exists. Also, find lists from the given table that give orders with interruptions.

Design an algorithm for this problem. Show the final order of machines along the production line, if it exists.

For each part (1-8, first column) we have to find a hash function without collisions that satisfies the second column in the table (if possible).

This is obviously the reversed process from generating hash table from given hash function.

I have found that the only possible order of machines along with production line, such that there is no interruption in the process is:

$$4,2,1,3,8,7,6,5$$

Question: How can we generate hash function from hash table?

1

There are 1 best solutions below

10
On

The problem can be solved with oriented graphs, instead of hash functions.

For each part 1-8, create a node. Then, as part 1 relies on part 2, draw a oriented edge from 2 to 1. In your example, you obtain the following graph (edited following comment remarks):

requirements

Now, we want to know when, for a given list of preconditions, we can actually satisfy all of them. How does that translate in terms of oriented graphs?

Actually, it is easier to answer the following question: when is it impossible to meet the dependencies requirements? Again, how does it translate in terms of oriented graphs?