Introduction To Algorithms, Third Edition (international Edition)
Introduction To Algorithms, Third Edition (international Edition)
3rd Edition
ISBN: 9780262533058
Author: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
Publisher: TRILITERAL
Question
Book Icon
Chapter C, Problem 1P

(a)

Program Plan Intro

To argue that numbers of ways of placing the balls in bins is bn .

(a)

Expert Solution
Check Mark

Explanation of Solution

Given information:

The n balls are distinct and their order within bin doesn’t matter.

Explanation:

There can be b different decisions made for n balls about their placement. The total number of possibilities is just bn as the number of possible decisions about the n balls placement is independent of previous choices.

(b)

Program Plan Intro

To prove that there are exactly (b+n1)!(b1)! ways to place the balls in the bins.

(b)

Expert Solution
Check Mark

Explanation of Solution

Given information:

It is assumed that balls are distinct and that balls in each bin are ordered.

Explanation:

First assume that sticks can be distinguished. This implies that there are total of n balls and b1 sticks to be arranged. This makes total things to be arranged as n+b1 and number of ways to do this is (b+n1)! . However some of these arrangements will be same and no matter how b1 sticks are arranged the answer will remain same. Thus n distinct balls and b1 indistinct sticks can be arranged in (n+b1)!(b1)! ways.

This arrangement can be related with the original statement, where sticks can be imagined as dividing lines between bins and ordered balls between them can be imagined as ordered balls in each bin.

(c)

Program Plan Intro

To show that (b+n1n) represents the numbers of ways of placing the balls in the bins.

(c)

Expert Solution
Check Mark

Explanation of Solution

Given information:

The balls are identical and their order within a bin does not matter.

Explanation:

Using results from above two parts, it can be noticed that any of the n permutation of balls will result in the similar configuration. Thus, count from the previous parts must be divided by n! . Thus number of permutations left are (n+b1)!n!(b1)!=(n+b1n) .

(d)

Program Plan Intro

To show that number of ways of placing the balls is (bn) based on condition that nb .

(d)

Expert Solution
Check Mark

Explanation of Solution

Given information:

The balls are identical and no bin may contain more than one ball.

Explanation:

Here, a set of bins to contain balls is selected,as each bin can have a ball or not. The numbers of bins selected is n since number of non-empty bins and the numbers of balls must be equal. In other words, a subset of size n of the bins is being selected from the whole set of bins. This becomes the combinatorial definition of (bn) defined in terms of selecting subsets.

(e)

Program Plan Intro

To show that number of ways of placing the balls is (n1b1) based on condition that nb .

(e)

Expert Solution
Check Mark

Explanation of Solution

Given information:

The balls are identical and no bin may be left empty.

Explanation:

The condition is to put one ball in each bin as no bin can be left empty. Thus there are nb balls left. Now since each bin has at least one ball, so balls can be put into the bins with no further restriction. This is similar to case shown in part c. The main difference being that the number of balls to be distributed is nb rather than n. Thus the answer becomes ((nb)+b1nb)=(n1nb)=(n1(n1)(nb))=(n1b1) .

Want to see more full solutions like this?

Subscribe now to access step-by-step solutions to millions of textbook problems written by subject matter experts!
Students have asked these similar questions
The next problem concerns the following C code: /copy input string x to buf */ void foo (char *x) { char buf [8]; strcpy((char *) buf, x); } void callfoo() { } foo("ZYXWVUTSRQPONMLKJIHGFEDCBA"); Here is the corresponding machine code on a Linux/x86 machine: 0000000000400530 : 400530: 48 83 ec 18 sub $0x18,%rsp 400534: 48 89 fe mov %rdi, %rsi 400537: 48 89 e7 mov %rsp,%rdi 40053a: e8 d1 fe ff ff 40053f: 48 83 c4 18 add callq 400410 $0x18,%rsp 400543: c3 retq 0000000000400544 : 400544: 48 83 ec 08 sub $0x8,%rsp 400548: bf 00 06 40 00 mov $0x400600,%edi 40054d: e8 de ff ff ff callq 400530 400552: 48 83 c4 08 add $0x8,%rsp 400556: c3 This problem tests your understanding of the program stack. Here are some notes to help you work the problem: • strcpy(char *dst, char *src) copies the string at address src (including the terminating '\0' character) to address dst. It does not check the size of the destination buffer. You will need to know the hex values of the following characters:
A ROP (Return-Oriented Programming) attack can be used to execute arbitrary instructions by chaining together small pieces of code called "gadgets." Your goal is to create a stack layout for a ROP attack that calls a function located at '0x4018bd3'. Below is the assembly code for the function 'getbuf', which allocates 8 bytes of stack space for a 'char' array. This array is then passed to the 'gets' function. Additionally, you are provided with five useful gadgets and their addresses. Use these gadgets to construct the stack layout. Assembly for getbuf 1 getbuf: 2 sub $8, %rsp 3 mov %rsp, %rdi 4 call gets 56 add $8, %rsp ret #Allocate 8 bytes for buffer #Load buffer address into %rdi #Call gets with buffer #Restore the stack pointer #Return to caller. Stack Layout (fill in Gadgets each 8-byte section) Address Gadget Address Value (8 bytes) 0x4006a7 pop %rdi; ret 0x7fffffffdfc0 Ox4006a9 pop %rsi; ret 0x7fffffffdfb8 0x4006ab pop %rax; ret 0x7fffffffdfb0 0x7fffffffdfa8 Ox4006ad mov %rax,…
In each of the following C code snippets, there are issues that can prevent the compilerfrom applying certain optimizations. For each snippet:• Circle the line number that contains compiler optimization blocker.• Select the best modification to improve optimization.1. Which line prevents compiler optimization? Circle one: 2 3 4 5 6Suggested solution:• Remove printf or move it outside the loop.• Remove the loop.• Replace arr[i] with a constant value.1 int sum( int ∗ ar r , int n) {2 int s = 0 ;3 for ( int i = 0 ; i < n ; i++) {4 s += a r r [ i ] ;5 p r i n t f ( ”%d\n” , s ) ;6 }7 return s ;8 }2. Which line prevents compiler optimization? Circle one: 2 3 4 5 6Suggested solution:• Move or eliminate do extra work() if it’s not necessary inside the loop.• Remove the loop (but what about scaling?).• Replace arr[i] *= factor; with arr[i] = 0; (why would that help?).1 void s c a l e ( int ∗ ar r , int n , int f a c t o r ) {2 for ( int i = 0 ; i < n ; i++) {3 a r r [ i ] ∗= f a c t o r…
Knowledge Booster
Background pattern image
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
C++ Programming: From Problem Analysis to Program...
Computer Science
ISBN:9781337102087
Author:D. S. Malik
Publisher:Cengage Learning
Text book image
Operations Research : Applications and Algorithms
Computer Science
ISBN:9780534380588
Author:Wayne L. Winston
Publisher:Brooks Cole
Text book image
C++ for Engineers and Scientists
Computer Science
ISBN:9781133187844
Author:Bronson, Gary J.
Publisher:Course Technology Ptr
Text book image
Programming Logic & Design Comprehensive
Computer Science
ISBN:9781337669405
Author:FARRELL
Publisher:Cengage