Bit Wizardry

Post on 02-Feb-2016

73 views 0 download

description

Bit Wizardry. 1. the art of a binary wizard 10. a bit of sorcery 11. bit by bit, it looks like magic 100. a great ability in using bits. Who do we think we are?. We. Dhruv Matani (tall guy) Ashwin Jain (thin guy) Shilp Gupta (fat guy). We. Programmers - PowerPoint PPT Presentation

Transcript of Bit Wizardry

1. the art of a binary wizard10. a bit of sorcery11. bit by bit, it looks like magic100. a great ability in using bits

1. the art of a binary wizard10. a bit of sorcery11. bit by bit, it looks like magic100. a great ability in using bits

Bit WizardryBit Wizardry

Who do we think we are?Who do we think we are?

WeWe

•Dhruv Matani (tall guy)

•Ashwin Jain (thin guy)

•Shilp Gupta (fat guy)

•Dhruv Matani (tall guy)

•Ashwin Jain (thin guy)

•Shilp Gupta (fat guy)

WeWe

•Programmers

•Software Developers, Directi

•Bit Wizards

•Programmers

•Software Developers, Directi

•Bit Wizards

Who do we think you are?

Who do we think you are?

YouYou

•Programmers

•Wish to become Bit Wizards

•Programmers

•Wish to become Bit Wizards

Bit WizardsBit Wizards

•Better programmers

•Bits are cool!

•Better programmers

•Bits are cool!

Why?Why?

Why?Why?

•Bits are simple

•zero

•one

•Bits are simple

•zero

•one

Why?Why?

•Bit operations are simple

•and

•or

•not

•Bit operations are simple

•and

•or

•not

Why?Why?

•2n is common

•Tower of Hanoi

•Dynamic Programming

•Set cover

•2n is common

•Tower of Hanoi

•Dynamic Programming

•Set cover

Why Tower of Hanoi?Why Tower of Hanoi?

•3n states

•Optimal sequence contains

•(2n - 1) moves

•General case?

•3n states

•Optimal sequence contains

•(2n - 1) moves

•General case?

Why DP?Why DP?

•Weighted Matching

•TSP

•Domino Tiling

•The list goes on..

•Weighted Matching

•TSP

•Domino Tiling

•The list goes on..

Why Set Cover?Why Set Cover?

•Statement

• Given ‘n’ items, you are given the cost of covering, each subset of items. Which mutually exclusive subsets to select, such that the union selects all items and the total cost of cover is minimal among all covers.

•Statement

• Given ‘n’ items, you are given the cost of covering, each subset of items. Which mutually exclusive subsets to select, such that the union selects all items and the total cost of cover is minimal among all covers.

Why 2n?Why 2n?

•n-bits to mask them all,n-bits to find them,n-bits compress them alland in an array bind them

•n-bits to mask them all,n-bits to find them,n-bits compress them alland in an array bind them

What the cuss was that?What the cuss was that?

Compress spaceCompress space

•Premise

•byte - smallest unit of “point-able” memory

•byte = 8 bits

•Conclusion

•Waste not, want not

•Premise

•byte - smallest unit of “point-able” memory

•byte = 8 bits

•Conclusion

•Waste not, want not

Faster lookup?Faster lookup?

•Masks are numbers

•Numbers make lightening fast indexes

•Think, array!

•Masks are numbers

•Numbers make lightening fast indexes

•Think, array!

Are you convinced?Are you convinced?

•Say yes.•Say yes.

Pay attention!Pay attention!

•You too @ashwin + @dhruv!•You too @ashwin + @dhruv!

RulesRules

•If in doubt / distress / disbelief / discomfort / disorientation or difficulty, ask question

•If in doubt / distress / disbelief / discomfort / disorientation or difficulty, ask question

CautionCaution

•Parenthesize your bit operations

•If using Turbo C++ / Borland C++, use long int instead of int

•Parenthesize your bit operations

•If using Turbo C++ / Borland C++, use long int instead of int

001001

Bit by BitBit by Bit

bitbit

•A unit of information.

•0 or 1

•A unit of information.

•0 or 1

bytebyte

•1 byte = 8 bits

•char (g++)

•1 byte = 8 bits

•char (g++)

short intshort int

•1 short int = 16 bits

•short int (g++)

•int (turbo c++)

•1 short int = 16 bits

•short int (g++)

•int (turbo c++)

intint

•1 int = 4 bytes = 32 bits

•int (g++)

•long int (turbo c++)

•1 int = 4 bytes = 32 bits

•int (g++)

•long int (turbo c++)

long long intlong long int

•1 long long int = 64 bits

•long long int (g++)

•__int64 (visual c++)

•1 long long int = 64 bits

•long long int (g++)

•__int64 (visual c++)

andand

•conjunction

•truth table

•conjunction

•truth table

oror

•disjunction

•truth table

•disjunction

•truth table

notnot

•negation

•truth table

•negation

•truth table

xorxor

•exclusive or / toggle

•truth table

•exclusive or / toggle

•truth table

bitwise operatorsbitwise operators

•x & y

•x | y

•~x

•x^y

•x & y

•x | y

•~x

•x^y

shift operatorsshift operators

•>>

•<<

•>>

•<<

Do it yourself.Do it yourself.

wake up, open your computer, try themwake up, open your computer, try them

Print the input in binary using bitwise operators.Print the input in binary using bitwise operators.

Sieve the primes < 1024 using an array of 32 ints

only!

Sieve the primes < 1024 using an array of 32 ints

only!

SolutionSolution

•SET(n) A[n >> 5] |= (1 << (n & 31))

•UNSET(n) A[n>>5] &= ~(1 << (n&31))

•SET(n) A[n >> 5] |= (1 << (n & 31))

•UNSET(n) A[n>>5] &= ~(1 << (n&31))

010010

Things you should knowThings you should know

2n2n

•1 followed by n 0’s•1 followed by n 0’s

2n - 12n - 1

•1 repeated n times•1 repeated n times

-1-1

•all 1’s•all 1’s

<<<<

•multiply by power of 2•multiply by power of 2

>>>>

•divide by power of 2•divide by power of 2

& (2n - 1)& (2n - 1)

•remainder on division by 2n•remainder on division by 2n

x & 1x & 1

•is the number even or odd?•is the number even or odd?

x & (x - 1)x & (x - 1)

•is x a power of 2?

•x &= (x-1) removes the least significant set bit!

•can you think of immediate uses?

•is x a power of 2?

•x &= (x-1) removes the least significant set bit!

•can you think of immediate uses?

x & (x + 1)x & (x + 1)

•is the binary expansion of x all 1’s?•is the binary expansion of x all 1’s?

x & (-x)x & (-x)

•smallest power of 2 in the binary expansion of x

•smallest power of 2 in the binary expansion of x

x & (-x)x & (-x)

•-x = ~x + 1

•2’s complement notation

•Understand this very carefully!

•-x = ~x + 1

•2’s complement notation

•Understand this very carefully!

~x & (x + 1)~x & (x + 1)

•isolate the rightmost 0•isolate the rightmost 0

swap(x,y)swap(x,y)

•x ^= y ^= x ^= y•x ^= y ^= x ^= y

Do it yourselfDo it yourself

do you have your pens and pencils?do you have your pens and pencils?

Given a number x, find the next higher number with the same

number of set bits.

Given a number x, find the next higher number with the same

number of set bits.

011011

Binary searching on bitsBinary searching on bits

BS!?BS!?

•Calculate the number of set bits in a number.

•How many operations can you do it in?

•Most probably O(log n) = O(number of bits)

•Calculate the number of set bits in a number.

•How many operations can you do it in?

•Most probably O(log n) = O(number of bits)

Huh!?Huh!?

•Lets do it in O(log of the number of bits).

•O(log log n) !?

•Lets do it in O(log of the number of bits).

•O(log log n) !?

DefinitionsDefinitions

•Given x. (Assume it has 32 bits)•Given x. (Assume it has 32 bits)

Step 1Step 1

•X = (X & 0x55555555) + ((x & 0xAAAAAAAA) >> 1)

•X = (X & 0x55555555) + ((x & 0xAAAAAAAA) >> 1)

Step 2Step 2

•X = (X & 0x33333333) + ((x & 0xcccccccc) >> 2)

•X = (X & 0x33333333) + ((x & 0xcccccccc) >> 2)

Step 3Step 3

•X = (X & 0x0f0f0f0f) + ((x & 0xf0f0f0f0) >> 4)

•X = (X & 0x0f0f0f0f) + ((x & 0xf0f0f0f0) >> 4)

Step 4Step 4

•X = (X & 0x00ff00ff) + ((x & 0xff00ff00) >> 8)

•X = (X & 0x00ff00ff) + ((x & 0xff00ff00) >> 8)

Step 5Step 5

•X = (X & 0x0000ffff) + ((x & 0xffff0000) >> 16)

•X = (X & 0x0000ffff) + ((x & 0xffff0000) >> 16)

EndEnd

•return x•return x

Beyond the horizonBeyond the horizon

•Think of the several possibilities

•Compute the parity of the number of 1’s

•Reverse the bits of a number

•Think of the several possibilities

•Compute the parity of the number of 1’s

•Reverse the bits of a number

Do it yourselfDo it yourself

the s**t has hit the fan!the s**t has hit the fan!

Given x, find the highest power of 2, less than x

Given x, find the highest power of 2, less than x

SolutionSolution

•x |= x >> 1x |= x >> 2x |= x >> 4x |= x >> 8x |= x >> 16

•return x - (x >> 1)

•x |= x >> 1x |= x >> 2x |= x >> 4x |= x >> 8x |= x >> 16

•return x - (x >> 1)

100100

Invention of maskingInvention of masking

The IdeaThe Idea

•You know set

•You know subset

•Lets number subsets

•You know set

•You know subset

•Lets number subsets

The IdeaThe Idea

•label items of a set from {0, 1, 2, 3 ... (n-1)}

•n items = 2n subsets

•lets number subsets from 0 to 2n - 1

•label items of a set from {0, 1, 2, 3 ... (n-1)}

•n items = 2n subsets

•lets number subsets from 0 to 2n - 1

The IdeaThe Idea

•Subset number ‘x’ contains item numbered ‘i’ iff bit ‘i’ is set in ‘x’, and vice versa

•Subset number ‘x’ contains item numbered ‘i’ iff bit ‘i’ is set in ‘x’, and vice versa

Get it?Get it?

•x is the mask of the subset

•directly maps to a subset

•an iteration from 0 to 2n - 1 iterates over all subsets!

•x is the mask of the subset

•directly maps to a subset

•an iteration from 0 to 2n - 1 iterates over all subsets!

RealizeRealize

•| = set union

•& = set intersection

•-1 ^ A = set negation

•| = set union

•& = set intersection

•-1 ^ A = set negation

Think!Think!

•Set subtraction

•Adding

•Deleting

•Testing set participation

•Set subtraction

•Adding

•Deleting

•Testing set participation

Dynamic ProgrammingDynamic Programming

•Weighted Matching

•A group of ‘n’ men and ‘n’ women participate in a marriage fare

•A matrix depicts the cost of marriage between ‘i’th guy and ‘j’th gal

•Find the best pairs, such that the total costs of all marriages is the least!

•Weighted Matching

•A group of ‘n’ men and ‘n’ women participate in a marriage fare

•A matrix depicts the cost of marriage between ‘i’th guy and ‘j’th gal

•Find the best pairs, such that the total costs of all marriages is the least!

ConcentrateConcentrate

a presentation can only say as much!a presentation can only say as much!

UnderstandUnderstand

•A matrix of numbers

•Selection of items

•exactly 1 in each row

•exactly 1 in each column

•A matrix of numbers

•Selection of items

•exactly 1 in each row

•exactly 1 in each column

A brute force approachA brute force approach

•n!

•Consider all permutations

•n!

•Consider all permutations

A faster brute forceA faster brute force

•O(n 2n)

•Each mask selects a subset of columns

•And as many rows as columns (from top)

•O(n 2n)

•Each mask selects a subset of columns

•And as many rows as columns (from top)

Lets chalk itLets chalk it

Home workHome work

•Think / read about the brute force solution to Traveling Sales Person (TSP)

•In O(n 2n) space, this faster brute force handles instances up to n = 20, quickly!

•Think / read about the brute force solution to Traveling Sales Person (TSP)

•In O(n 2n) space, this faster brute force handles instances up to n = 20, quickly!

Home workHome work

•Then solve

•PermRLE

•GCJ 2008, Round 2, Problem D

•Which permutation of blocks of 16 characters, allow for the smallest Run Length Encoding of a huge string!

•Then solve

•PermRLE

•GCJ 2008, Round 2, Problem D

•Which permutation of blocks of 16 characters, allow for the smallest Run Length Encoding of a huge string!

101101

Set coverSet cover

The ProblemThe Problem

•Given a mask, how do you calculate the masks that depict the subsets of this mask.

•Given a mask, how do you calculate the masks that depict the subsets of this mask.

The SolutionThe Solution

•for(nmask = mask; nmask > 0; nmask = mask & (nmask - 1)) {

• // use nmask

•}

•for(nmask = mask; nmask > 0; nmask = mask & (nmask - 1)) {

• // use nmask

•}

NotesNotes

•Visits the masks in reverse order

•Does not generate the empty mask

•Visits the masks in reverse order

•Does not generate the empty mask

ComplexityComplexity

•O(3n) [how?]

•Recursively running this on all subsets with memorization

•O(3n) [how?]

•Recursively running this on all subsets with memorization

Use It!Use It!

•You are given n points in a co-ordinate plane.

•Find out whether you can cover these n-points with k squares (points must lie inside the squares or on the boundary) of size ‘t’ or less.

•You are given n points in a co-ordinate plane.

•Find out whether you can cover these n-points with k squares (points must lie inside the squares or on the boundary) of size ‘t’ or less.

Home workHome work

•Binary search on ‘t’ can help calculate the smallest value of ‘t’ possible.

•Square Fields - Google Code Jam, Practice Contest, Problem B

•Binary search on ‘t’ can help calculate the smallest value of ‘t’ possible.

•Square Fields - Google Code Jam, Practice Contest, Problem B

110110

Binary Indexed TreeBinary Indexed Tree

ProblemProblem

•Design a data structure that supports the following two operations

•An array of n elements.

•Add value x at index i (1-based)

•Retrieve sum of all values from index 1 to i

•Design a data structure that supports the following two operations

•An array of n elements.

•Add value x at index i (1-based)

•Retrieve sum of all values from index 1 to i

BIT!?BIT!?

•A variation on segment tree

•O(N) space

•O(log N) update

•O(log N) retrieval

•A variation on segment tree

•O(N) space

•O(log N) update

•O(log N) retrieval

111111

Tower of HanoiTower of Hanoi

Not this!Not this!

•A bit sequence of n-bits - from 0 to 2n-1 - encodes the disk to be moved in the i’th step

•Yes, this is uniquely determinable

•Let google show you how

•A bit sequence of n-bits - from 0 to 2n-1 - encodes the disk to be moved in the i’th step

•Yes, this is uniquely determinable

•Let google show you how

But!?But!?

•Ok ok!

•Calculate the Grey Codes from 0 to 2n - 1

•n = number of disks

•The bit that changes in the i’th grey code compared to the (i-1)th grey code is the disk to move!

•0 = smallest disk

• i >= 1

•Ok ok!

•Calculate the Grey Codes from 0 to 2n - 1

•n = number of disks

•The bit that changes in the i’th grey code compared to the (i-1)th grey code is the disk to move!

•0 = smallest disk

• i >= 1

Grey Codes!?Grey Codes!?

•ith Grey Code = i ^ (i >> 1)

•Consecutive grey codes differ at only 1 bit

•Sequence of combinations that differ by 1 item (selected or dropped)

•ith Grey Code = i ^ (i >> 1)

•Consecutive grey codes differ at only 1 bit

•Sequence of combinations that differ by 1 item (selected or dropped)

Thats all folksThats all folks

yes, this is the end!yes, this is the end!

Thank YouThank You

for being an immensely patient audiencefor being an immensely patient audience

Blame / Praise us @Blame / Praise us @

dhruv.m@directi.comashwin.j@directi.comshilp.g@directi.com

dhruv.m@directi.comashwin.j@directi.comshilp.g@directi.com