For an assignment I have been given the bin packing problem and asked to show how you can solve the decision version of the problem from the optimization version and vice versa. I understand that to solve the decision version you simply take the number of bins used in the optimization version and compare it to the max number of bins specified but how can I use the decision version to solve the optimization version?
Bin packing, Decision vs Optimization
2.8k Views Asked by David Carpenter At
1
There are 1 best solutions below
Related Questions in ALGORITHM
- Two different numbers in an array which their sum equals to a given value
- Given two arrays of positive numbers, re-arrange them to form a resulting array, resulting array contains the elements in the same given sequence
- Time complexity of the algorithm?
- Find a MST in O(V+E) Time in a Graph
- Why k and l for LSH used for approximate nearest neighbours?
- How to count the number of ways of choosing of k equal substrings from a List L(the list of All Substrings)
- Issues with reversing the linkedlist
- Finding first non-repeating number in integer array
- Finding average of an array
- How to check for duplicates with less time in a list over 9000 elements by python
- How to pick a number based on probability?
- Insertion Sort help in javascript -- Khan Academy
- Developing a Checkers (Draughts) engine, how to begin?
- Can Bellman-Ford algorithm be used to find shorthest path on a graph with only positive edges?
- What is the function for the KMP Failure Algorithm?
Related Questions in OPTIMIZATION
- Does compiler optimize operation on const variable and literal const number?
- Optimizing for Social Leaderboards
- 3D FFT with data larger than cache
- Optimum directory structure for large number of files to display on a page
- How to make faster queries on my mysql table?
- Xib taking long time (>1s) to load. UIFont cache seems to blame
- How to speed up string comparisons in an array with a for loop?
- How to load all symbols from shared library on start up?
- Cython speed vs numpy
- Improve Speed of Piecewise Function in MATLAB
- How to check that all values are equal in array using recursion?
- PHP split string into known tokens and remaining words add to single-worded array
- Python: why is my O(n) slowing down as it progresses?
- Hint indexes to mysql on Join
- Error When Compiler Optimizations are on
Related Questions in BIN-PACKING
- One-dimensional binpacking algorithm with relative costs
- A new Bin-packing?
- Bin packing - variants and quantities across a known number of unique boxes
- How do you print out objects of a list within a list?
- Best approach to fit numbers
- Bin packing, Decision vs Optimization
- Calculating where to place one arbitrary 2d shape in another?
- Bin Packing: Set amount on bins, want to minimize the max bin weight
- Looking for suggestions on understanding a particular combinatorial optimization problem
- Packing rectangles without rotation?
- Finding multiple solutions to bin packing
- How to divide a set of instruction blocks into sequences that fit certain sized contiguous arrays in JavaScript?
- Is there a c++ source/lib to solve 2D Bin Packing with a rectangular bin (not square) and rotation?
- Distributing stones into buckets (not trivial) / Integer Bin Packing Upper bound
- Algorithm for rectangles position
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
You can use the decision version to solve the optimization version by observing that if
Nbins is sufficient, thenK > Nbins will also be sufficient.Start with a single bin, and run the decision version on it. If the answer is
true, you are done; otherwise, keep doubling the number of bins until you hit atrue. Let's say that you get an answer oftruewhen you tryN = 2 ^ k. Then you can run a binary search betweenM = 2^(k-1)andN, inclusive, to find the exact solution to the optimization problem (bothNandkcome from the previous step).Consider this example: let's say the optimal solution is 14. You could then try the following sequence of decision problem to find the answer:
falsefalse(doubled 1)false(doubled 2)false(doubled 4)true(doubled 8; we've got atrue, so proceed to the binary search)false(midpoint between 8 and 16)true(midpoint between 12 and 16)false(midpoint between 12 and 14)In general, the answer can be found in logarithmic time (i.e. in Log2(Answer)).
Once you know the number of bins
Nrequired to packageXobjects, run a bipartite matching algorithm between the items on one side and theNbins on the other side. Assuming that the decision problem is solved correctly, such bipartite matching must exist, and can be found in polynomial time.