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?
Related Questions in ALGORITHM
- MCNP 6 - Doubts about cells
- Given partially sorted array of type x<y => first apperance of x comes before first of y, sort in average O(n)
- What is the algorithm behind math.gcd and why it is faster Euclidean algorithm?
- Purpose of last 2 while loops in the merge algorithm of merge sort sorting technique
- Dots and Boxes with apha-beta pruning
- What is the average and worst-case time complexity of my string searching algorithm?
- Building a School Schedule Generator
- TC problem 5-2:how to calculate the probability of the indicator random variable?
- LCA of a binary tree implemented in Python
- Identify the checksum algorithm
- Algorithm for finding a subset of nodes in a weighted connected graph such that the distance between any pair nodes are under a postive number?
- Creating an efficent and time-saving algorithm to find difference between greater than and lesser than combination
- Algorithm to find neighbours of point by distance with no repeats
- Asking code suggestions about data structure and algorithm
- Heap sort with multithreading
Related Questions in OPTIMIZATION
- Optimize LCP ReactJs
- Efficiently processing many small elements of a collection concurrently in Java
- How to convert the size of the HTML document from 68 Kb to the average of 33 Kb?
- Optimizing Memory-Bound Loop with Indirect Prefetching
- Google or-tools soft constraint issue
- How to find function G(x), and make for every x, G(x) always returns fixed point for another function F(G(x))
- Trying to sort a set of words with the information theory to solve Worlde in Python but my program is way to slow
- Do conditional checks cause bottlenecks in Javascript?
- Hourly and annual optimization problem over matrix
- Sending asynchronous requests without a pre-defined task list
- DBT - Using SELECT * in the staging layer
- Using `static` on a AVX2 counter function increases performance ~10x in MT environment without any change in Compiler optimizations
- Is this a GCC optimiser bug or a feature?
- Performance difference between two JavaScript code snippets for comparing arrays of strings
- Distribute a list of positive numbers into a desired number of sets, aiming to have sums as close as possible between them
Related Questions in BIN-PACKING
- 3-d bin packing with additional constraints and subsets of items
- Bin packing with fixed number of bins of varying capacities and item-to-bin compatibility constraints
- Balancing utilization across buckets
- 3D Bin packing and Intersection locations
- Adjust packing coordinates in a bin if an additional bin is added
- ortools cp-sat: 2d bin packing considering items length, width and weight
- If the BinPack problem were in P, how to get a packing that minimizes the number of bins in P?
- Get X and Y sizes of remaining surface area
- NP hardness of bin packing with a fixed number of bins
- Interactive bin/figure for bin packing with Painter in py3dbp
- 3DContainerPacking intersected objects
- Any standard heuristic to solve bin packing problem with irregular sheet?
- 1d bin packing problem with FFD + Simulated annealling not improving the solution. Any thoughts?
- OR-Tools bin packing: Ensuring items with the same supplier are in the same bin while considering capacity constraints
- Fitting parcel in parcel machine box algorithm
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?
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)
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.