SlideShare a Scribd company logo
1 of 22
CHAPTER 11 Coping with NP-completeness
Algorithm 11.1.4 Largest Independent Set This algorithm returns  α (G), the size of a largest independent set in  G  = ( V ,  E ). Input Parameter:  G  = ( V ,  E ) Output Parameters: None largest_independent_set ( G ) { if ( E  == Ø) return | V | else { pick first  v      V  such that  N ( v ) ≠ Ø G 1  =  G  - { v } G 2  =  G  - { v } -  N ( v ) k 1  =  largest_independent_set ( G 1 ) // assume  v  not in independent set k 2  =  largest_independent_set ( G 2 ) // assume  v  in independent set return  max ( k 1 ,  k 2  + 1) } }
Algorithm 11.1.11 3-Satisfiability This algorithm takes as an input a formula in CNF in which every clause contains at most three literals and returns true if and only if is satisfiable.
Input Parameter:  ϕ   Output Parameters: None 3_satisfiability ( ϕ ) { if ( ϕ  does not contain any clauses) return  ϕ  // ϕ  is the logical constant true or false if ( ϕ  contains a clause with one literal  a ) { ϕ  =  ϕ [ a  -> true] //  a  has to be true return 3_satisfiability( ϕ ) } if ( ϕ  contains a clause with two literals  a ,  b ) { ϕ 1  =  ϕ [ a  -> false][ b  -> true] ϕ 2  =  ϕ [ a  -> true] return 3_satisfiability( ϕ 1 )||3_satisfiability( ϕ 2 ) } if ( ϕ  contains a clause with three literals  a ,  b ,  c ) { ϕ 1  =  ϕ [ a  -> false][ b  -> false][ c  -> true] ϕ 2  =  ϕ [ a  -> false][ b  -> true] ϕ 3  =  ϕ [ a  -> true] return 3_satisfiability( ϕ 1 ) || 3_satisfiability( ϕ 2 ) || 3_satisfiability( ϕ 3 ) } }
Algorithm 11.2.1 Randomized  st-Connectivity This algorithm takes as an input a graph  G   = ( V ,  E ) and two vertices  s ,  t      V . It returns true  with probability one if there is a path from  s  to  t ; if there is no path from  s  to  t , it fails to terminate. Input Parameters:  G ,  s ,  t Output Parameters: None randomized_st_connectivity ( G ,  s ,  t ) { vertex  =  s while ( vertex  !=  t ) vertex  = random vertex from  N ( vertex ) return true }
Algorithm 11.2.4 Randomized Hamiltonian Path This algorithm takes as input a graph G and searches for a Hamiltonian path. It returns true if it finds a Hamiltonian path and false otherwise. randomized_hamiltonian_path ( G ) { v 0   = random vertex in  G i  = 0 do { N  =  N ( v i ) - { v 0 , . . . ,  v i-1 } //  N  contains those neighbors of  v i  (the current last // vertex of the path) that are not already on the path if ( N  ≠ Ø) { i  =  i  + 1 v i  = random vertex in  N } else if ( v j     N ( v i ) for some 0 =  j  <  i  - 1) ( v 0 , . . . ,  v i ) = ( v 0 , . . . ,  v j ,  v i , . . . ,  v j+1 ) else return false } while ( i  != | V | - 1) return true }
Algorithm 11.3.8 Next Fit This algorithm computes an assignment  b  of  n  items with sizes  s [1], . . . ,  s [ n ]    (0, 1] into bins and returns the number  k  of bins it used. Input Parameter:  s Output Parameters: None next_fit ( s ) { n  =  s . last k  = 1 // current bin size  = 0 //accumulated size of items in current bin for  i  = 1 to  n if ( size  +  s [ i ] = 1) { b [ i ] =  k  // enough room to add item  i  to bin  k size  =  size  +  s [ i ] } else { k  =  k  + 1 b [ i ] =  k size  =  s [ i ] } return  k }
Algorithm 11.3.13 First Fit This algorithm computes an assignment  b  of  n  items with sizes  s [1], . . . ,  s [ n ]    (0, 1] into bins and returns the number  k  of bins it used.
Input Parameter:  s Output Parameters: None first_fit ( s ) { n  =  s . last k  = 1 // number of bins used c [ k ] = 0 //  c [ i ] is the total size of items in bin  i for  i  = 1 to  n  { j  = 1 while ( c [ j ] +  s [ i ] > 1) { j  =  j  + 1 if ( j  >  k ) { // open new bin k  =  j   c [ k ] = 0 } } // add item  i  to bin  j b [ i ] =  j   c [ j ] =  c [ j ] +  s [ i ] } return  k }
Algorithm 11.3.16 First Fit Decreasing This algorithm computes an assignment  b  of  n  items with sizes  s [1], . . . ,  s [ n ]    (0, 1] into bins and returns the number  k  of bins it used. Input Parameter:  s Output Parameters: None first_fit_decreasing ( s ) { s . sort (>) // sort  s  in decreasing order return  first_fit ( s ) }
Algorithm 11.3.19 Greedy Coloring This algorithm takes as an input a graph  G  = ( V ,  E ) and constructs a coloring of the vertices of the graph such that no two adjacent vertices have the same color. Input Parameter:  G  = ( V , E ) Output Parameters: None greedy_coloring ( G ) { n  = | V | C  = {1,..., n } // set of colors for each  v      V color  v  with smallest color in  C  not used  by any vertex in  N ( v ) }
Algorithm 11.3.23 Wigderson Coloring This algorithm takes as input a 3-colorable graph  G  = ( V ,  E ) and constructs a coloring of the vertices of the graph such that no two adjacent vertices have the same color.
Input Parameter:  G  = ( V , E ) Output Parameters: None wigderson_coloring ( G ) { n  = | V | color_count  = 0 while ( V  contains a vertex of degree at least √ n ) { pick  v  of degree at least √ n G  = ( N ( v ), E ) two_color ( G , color_count ) //move on to next set of colors color_count  =  color_count  + 2  G  =  G  -  N ( v ) } greedy_coloring ( G ,  color_count )  // see new implementation below } greedy_coloring ( G , c ) { n  = | V | C  = { c ,..., c  +  n } // set of colors for each  v      V color  v  with smallest color in  C   not used by any vertex in  N ( v ) }
Algorithm 11.4.4 Vertex Cover This algorithm determines whether a graph  G  = ( V , E ) has a vertex cover of size at most  k . Input Parameter:  G  = ( V , E ) Fixed Parameter:  k Output Parameters: None vertex_cover ( G , k ) { if (( k  == 0) || ( E  == Ø)) return  E  == Ø else { pick first  e  = ( u , v ) in  E G 1   = ( V -{ u },  E -{( u , w ) |  w      V }) G 2   = ( V -{ v },  E -{( v , w ) |  w      V }) return vertex_cover( G 1 ,  k -1) || vertex_cover( G 2 ,  k -1) } }
Algorithm 11.4.7 Vertex Cover, Improved This algorithm determines whether a graph  G  = ( V , E ) has a vertex cover of size at most  k .
Input Parameter:  G  = ( V , E ) Fixed Parameter:  k Output Parameters: None improved_vertex_cover ( G , k ) { m  = 0 V ’ = Ø for each  v  in  V if ( larger_degree ( G , v , k )) m  =  m  + 1 else  // collect vertices of degree V ’ =  V ’    { v } // at most  k  in  V ’ if ( m  >  k ) return false // compute  G ’ E ’ = {( u , v ) | ( u , v )     E  and ( u , v )     V } G ’ = ( V , E ) // remove isolated vertices from  G ’ for each  v  in  V if (isolated( G ’, v )) G ’ =  G ’ - { v } if (| V ‘| > 2 k ( k  -  m ))  // in this case there cannot be  return false  // a  k  -  m  vertex cover return vertex_cover( G ’, k  -  m ) }
Algorithm 11.5.5 Queens This algorithm finds a solution to the  n -queens problem, which is stored in the array  q . Input Parameter:  n Output Parameter:  q queens ( n , q ) { do { q . random_permutation () do { swaps  = 0 // initialize counter for each  i , j     {1,...,  n } if (queen in column  i  or  j  under attack) if (swapping queens in column  i  and  j   reduces collisions) { q . swap ( i , j ) swaps  =  swaps  + 1 } } while ( swaps  > 0) } while (there are collisions in  q ) }
Local Search Heuristic This algorithm tries to improve an initial random guess by making local changes selected from a set of operations  T . The function  eval  evaluates the goodness of a solution. local_search () { c  = random element of the search space do { changed  = false for each  T      T  { c ’ =  T ( c ) Δ  =  eval ( c ) -  eval ( c ’) if ( Δ  < 0) { c  = c’ changed  = true } } } while ( changed ) output  c }
Iterated Local Search Heuristic This algorithm runs a local search heuristic repeatedly from random starting points.  T  is the set of local operations allowed. The function  eval  evaluates the goodness of a solution. iterated_local_search () { do { changed  = false c  = random element of the search space do { for each  T      T  { c ’ =  T ( c ) Δ  =  eval ( c ) -  eval ( c ’) if ( Δ  < 0) { c  = c’ changed  = true } } } while ( changed ) } while ( eval ( c ) is not acceptable) output  c }
Algorithm 11.5.7 Independent Set Search This algorithm searches for a large independent set in the input graph  G  .
Input Parameter:  G  = ( V , E ) Output Parameters: None independent_set_search () { do { I  = random subset of  V do { changed  = false c  = random element of the search space do { for each  T      T  { I ’ = I  Δ  {v}  //  Δ  as symmetric difference Δ  =  eval ( I ) -  eval ( I ’) if ( Δ  < 0) { I  =  I ’ changed  = true } } } while ( changed ) } while ( eval ( I ) is not acceptable) output  I }
Independent Set Search through Simulated Annealing Input Parameter:  G  = ( V , E ) Output Parameters: None sa_independent_set_search () { I  = random subset of  V n  = 0 do { n  =  n  + 1 T  =  T ( n ) // set current temperature for each  v      V  { I ’ =  I   Δ  { v }  //  Δ  as symmetric difference Δ  =  eval ( I ) -  eval ( I ’) if (( Δ  < 0) || ( random () <  p ( T , Δ )) { I  =  I ’ } } } while ( eval ( I)  is not acceptable) output  I }

More Related Content

What's hot (19)

Maps&hash tables
Maps&hash tablesMaps&hash tables
Maps&hash tables
 
Chap10alg
Chap10algChap10alg
Chap10alg
 
Lec1
Lec1Lec1
Lec1
 
Asymptotic Notation
Asymptotic NotationAsymptotic Notation
Asymptotic Notation
 
Control System Homework Help
Control System Homework HelpControl System Homework Help
Control System Homework Help
 
Signal Processing Assignment Help
Signal Processing Assignment HelpSignal Processing Assignment Help
Signal Processing Assignment Help
 
Digital Signal Processing Assignment Help
Digital Signal Processing Assignment HelpDigital Signal Processing Assignment Help
Digital Signal Processing Assignment Help
 
Arrays
ArraysArrays
Arrays
 
Signal Processing Assignment Help
Signal Processing Assignment HelpSignal Processing Assignment Help
Signal Processing Assignment Help
 
Mathematics notes and formula for class 12 chapter 7. integrals
Mathematics notes and formula for class 12 chapter 7. integrals Mathematics notes and formula for class 12 chapter 7. integrals
Mathematics notes and formula for class 12 chapter 7. integrals
 
Integration material
Integration material Integration material
Integration material
 
Signals Processing Homework Help
Signals Processing Homework HelpSignals Processing Homework Help
Signals Processing Homework Help
 
Unit 3-Greedy Method
Unit 3-Greedy MethodUnit 3-Greedy Method
Unit 3-Greedy Method
 
Basic_analysis.ppt
Basic_analysis.pptBasic_analysis.ppt
Basic_analysis.ppt
 
Aaex4 group2(中英夾雜)
Aaex4 group2(中英夾雜)Aaex4 group2(中英夾雜)
Aaex4 group2(中英夾雜)
 
DSP System Homework Help
DSP System Homework HelpDSP System Homework Help
DSP System Homework Help
 
Time and space complexity
Time and space complexityTime and space complexity
Time and space complexity
 
Lec4
Lec4Lec4
Lec4
 
Asymptotic notation
Asymptotic notationAsymptotic notation
Asymptotic notation
 

Viewers also liked

Ded algorithm1
Ded algorithm1Ded algorithm1
Ded algorithm1Munhchimeg
 
Hybrid worlds fungi final - crews
Hybrid worlds   fungi final - crewsHybrid worlds   fungi final - crews
Hybrid worlds fungi final - crewsrv media
 
Natura2000 V2 En
Natura2000 V2 EnNatura2000 V2 En
Natura2000 V2 Enatelletxea
 
Hybrid worlds - Fungi Progression - crews
Hybrid worlds -  Fungi Progression - crewsHybrid worlds -  Fungi Progression - crews
Hybrid worlds - Fungi Progression - crewsrv media
 
Barrier of packaging
Barrier of packagingBarrier of packaging
Barrier of packaginghoangvunl
 
Presentatie gemeente Groningen Inkoopbeleid
Presentatie gemeente Groningen InkoopbeleidPresentatie gemeente Groningen Inkoopbeleid
Presentatie gemeente Groningen InkoopbeleidJohan Stuiver
 
Nings To Knols Upload
Nings To Knols UploadNings To Knols Upload
Nings To Knols Uploadguesta3ed78
 
Alliantiefabriek Noord Holland Duurzame Projecten
Alliantiefabriek Noord Holland Duurzame ProjectenAlliantiefabriek Noord Holland Duurzame Projecten
Alliantiefabriek Noord Holland Duurzame ProjectenJohan Stuiver
 
Don't Screw Up Your Licensing
Don't Screw Up Your LicensingDon't Screw Up Your Licensing
Don't Screw Up Your LicensingAnsel Halliburton
 
Homelessness and Housing – Moving from Policy to Action - Frank Murtagh
Homelessness and Housing – Moving from Policy to Action - Frank MurtaghHomelessness and Housing – Moving from Policy to Action - Frank Murtagh
Homelessness and Housing – Moving from Policy to Action - Frank Murtaghbrianlynch
 
Hybrid worlds fungi updated - crews
Hybrid worlds   fungi updated - crewsHybrid worlds   fungi updated - crews
Hybrid worlds fungi updated - crewsrv media
 

Viewers also liked (20)

Ded algorithm1
Ded algorithm1Ded algorithm1
Ded algorithm1
 
Cei week 1
Cei week 1Cei week 1
Cei week 1
 
Hybrid worlds fungi final - crews
Hybrid worlds   fungi final - crewsHybrid worlds   fungi final - crews
Hybrid worlds fungi final - crews
 
Natura2000 V2 En
Natura2000 V2 EnNatura2000 V2 En
Natura2000 V2 En
 
Lecture4
Lecture4Lecture4
Lecture4
 
Lecture913
Lecture913Lecture913
Lecture913
 
Hybrid worlds - Fungi Progression - crews
Hybrid worlds -  Fungi Progression - crewsHybrid worlds -  Fungi Progression - crews
Hybrid worlds - Fungi Progression - crews
 
Barrier of packaging
Barrier of packagingBarrier of packaging
Barrier of packaging
 
Cei week 2
Cei week 2Cei week 2
Cei week 2
 
Presentatie gemeente Groningen Inkoopbeleid
Presentatie gemeente Groningen InkoopbeleidPresentatie gemeente Groningen Inkoopbeleid
Presentatie gemeente Groningen Inkoopbeleid
 
Nings To Knols Upload
Nings To Knols UploadNings To Knols Upload
Nings To Knols Upload
 
Chap07alg
Chap07algChap07alg
Chap07alg
 
Python
PythonPython
Python
 
Alliantiefabriek Noord Holland Duurzame Projecten
Alliantiefabriek Noord Holland Duurzame ProjectenAlliantiefabriek Noord Holland Duurzame Projecten
Alliantiefabriek Noord Holland Duurzame Projecten
 
TLF Reunion 2011
TLF Reunion 2011TLF Reunion 2011
TLF Reunion 2011
 
Resume
ResumeResume
Resume
 
Don't Screw Up Your Licensing
Don't Screw Up Your LicensingDon't Screw Up Your Licensing
Don't Screw Up Your Licensing
 
Homelessness and Housing – Moving from Policy to Action - Frank Murtagh
Homelessness and Housing – Moving from Policy to Action - Frank MurtaghHomelessness and Housing – Moving from Policy to Action - Frank Murtagh
Homelessness and Housing – Moving from Policy to Action - Frank Murtagh
 
Profiting In A LinkedIn Economy
Profiting In A LinkedIn EconomyProfiting In A LinkedIn Economy
Profiting In A LinkedIn Economy
 
Hybrid worlds fungi updated - crews
Hybrid worlds   fungi updated - crewsHybrid worlds   fungi updated - crews
Hybrid worlds fungi updated - crews
 

Similar to Chap11alg

Scientific Computing II Numerical Tools & Algorithms - CEI40 - AGA
Scientific Computing II Numerical Tools & Algorithms - CEI40 - AGAScientific Computing II Numerical Tools & Algorithms - CEI40 - AGA
Scientific Computing II Numerical Tools & Algorithms - CEI40 - AGAAhmed Gamal Abdel Gawad
 
Cs6402 design and analysis of algorithms may june 2016 answer key
Cs6402 design and analysis of algorithms may june 2016 answer keyCs6402 design and analysis of algorithms may june 2016 answer key
Cs6402 design and analysis of algorithms may june 2016 answer keyappasami
 
40+ examples of user defined methods in java with explanation
40+ examples of user defined methods in java with explanation40+ examples of user defined methods in java with explanation
40+ examples of user defined methods in java with explanationHarish Gyanani
 
Crypto cs36 39
Crypto cs36 39Crypto cs36 39
Crypto cs36 39sravanbabu
 
module4_dynamic programming_2022.pdf
module4_dynamic programming_2022.pdfmodule4_dynamic programming_2022.pdf
module4_dynamic programming_2022.pdfShiwani Gupta
 
Scilab help book 2 of 2
Scilab help book 2 of 2Scilab help book 2 of 2
Scilab help book 2 of 2Arun Umrao
 
Think Like Scilab and Become a Numerical Programming Expert- Notes for Beginn...
Think Like Scilab and Become a Numerical Programming Expert- Notes for Beginn...Think Like Scilab and Become a Numerical Programming Expert- Notes for Beginn...
Think Like Scilab and Become a Numerical Programming Expert- Notes for Beginn...ssuserd6b1fd
 

Similar to Chap11alg (20)

Chap10alg
Chap10algChap10alg
Chap10alg
 
Chap05alg
Chap05algChap05alg
Chap05alg
 
Chap05alg
Chap05algChap05alg
Chap05alg
 
Chap06alg
Chap06algChap06alg
Chap06alg
 
Chap06alg
Chap06algChap06alg
Chap06alg
 
Scientific Computing II Numerical Tools & Algorithms - CEI40 - AGA
Scientific Computing II Numerical Tools & Algorithms - CEI40 - AGAScientific Computing II Numerical Tools & Algorithms - CEI40 - AGA
Scientific Computing II Numerical Tools & Algorithms - CEI40 - AGA
 
Cs6402 design and analysis of algorithms may june 2016 answer key
Cs6402 design and analysis of algorithms may june 2016 answer keyCs6402 design and analysis of algorithms may june 2016 answer key
Cs6402 design and analysis of algorithms may june 2016 answer key
 
Chap08alg
Chap08algChap08alg
Chap08alg
 
Chap08alg
Chap08algChap08alg
Chap08alg
 
40+ examples of user defined methods in java with explanation
40+ examples of user defined methods in java with explanation40+ examples of user defined methods in java with explanation
40+ examples of user defined methods in java with explanation
 
Crypto cs36 39
Crypto cs36 39Crypto cs36 39
Crypto cs36 39
 
module4_dynamic programming_2022.pdf
module4_dynamic programming_2022.pdfmodule4_dynamic programming_2022.pdf
module4_dynamic programming_2022.pdf
 
Chap12alg
Chap12algChap12alg
Chap12alg
 
Chap12alg
Chap12algChap12alg
Chap12alg
 
Chap04alg
Chap04algChap04alg
Chap04alg
 
Chap04alg
Chap04algChap04alg
Chap04alg
 
Daa chapter11
Daa chapter11Daa chapter11
Daa chapter11
 
Chap4
Chap4Chap4
Chap4
 
Scilab help book 2 of 2
Scilab help book 2 of 2Scilab help book 2 of 2
Scilab help book 2 of 2
 
Think Like Scilab and Become a Numerical Programming Expert- Notes for Beginn...
Think Like Scilab and Become a Numerical Programming Expert- Notes for Beginn...Think Like Scilab and Become a Numerical Programming Expert- Notes for Beginn...
Think Like Scilab and Become a Numerical Programming Expert- Notes for Beginn...
 

More from Munhchimeg (20)

Ded algorithm
Ded algorithmDed algorithm
Ded algorithm
 
Tobch lecture1
Tobch lecture1Tobch lecture1
Tobch lecture1
 
Tobch lecture
Tobch lectureTobch lecture
Tobch lecture
 
Recursive
RecursiveRecursive
Recursive
 
Protsesor
ProtsesorProtsesor
Protsesor
 
Lecture916
Lecture916Lecture916
Lecture916
 
Lecture915
Lecture915Lecture915
Lecture915
 
Lecture914
Lecture914Lecture914
Lecture914
 
Lecture912
Lecture912Lecture912
Lecture912
 
Lecture911
Lecture911Lecture911
Lecture911
 
Lecture910
Lecture910Lecture910
Lecture910
 
Lecture9
Lecture9Lecture9
Lecture9
 
Lecture8
Lecture8Lecture8
Lecture8
 
Lecture7
Lecture7Lecture7
Lecture7
 
Lecture6
Lecture6Lecture6
Lecture6
 
Lecture5
Lecture5Lecture5
Lecture5
 
Lecture3
Lecture3Lecture3
Lecture3
 
Protsesor
ProtsesorProtsesor
Protsesor
 
Pm104 standard
Pm104 standardPm104 standard
Pm104 standard
 
Pm104 2004 2005
Pm104 2004 2005Pm104 2004 2005
Pm104 2004 2005
 

Recently uploaded

SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...CzechDreamin
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreelreely ones
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsUXDXConf
 
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoThe UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoUXDXConf
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomCzechDreamin
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsStefano
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeCzechDreamin
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCzechDreamin
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKUXDXConf
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...FIDO Alliance
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceSamy Fodil
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FIDO Alliance
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxJennifer Lim
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...CzechDreamin
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfFIDO Alliance
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2DianaGray10
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutesconfluent
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfFIDO Alliance
 

Recently uploaded (20)

SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreel
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoThe UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, Ocado
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 

Chap11alg

  • 1. CHAPTER 11 Coping with NP-completeness
  • 2. Algorithm 11.1.4 Largest Independent Set This algorithm returns α (G), the size of a largest independent set in G = ( V , E ). Input Parameter: G = ( V , E ) Output Parameters: None largest_independent_set ( G ) { if ( E == Ø) return | V | else { pick first v  V such that N ( v ) ≠ Ø G 1 = G - { v } G 2 = G - { v } - N ( v ) k 1 = largest_independent_set ( G 1 ) // assume v not in independent set k 2 = largest_independent_set ( G 2 ) // assume v in independent set return max ( k 1 , k 2 + 1) } }
  • 3. Algorithm 11.1.11 3-Satisfiability This algorithm takes as an input a formula in CNF in which every clause contains at most three literals and returns true if and only if is satisfiable.
  • 4. Input Parameter: ϕ Output Parameters: None 3_satisfiability ( ϕ ) { if ( ϕ does not contain any clauses) return ϕ // ϕ is the logical constant true or false if ( ϕ contains a clause with one literal a ) { ϕ = ϕ [ a -> true] // a has to be true return 3_satisfiability( ϕ ) } if ( ϕ contains a clause with two literals a , b ) { ϕ 1 = ϕ [ a -> false][ b -> true] ϕ 2 = ϕ [ a -> true] return 3_satisfiability( ϕ 1 )||3_satisfiability( ϕ 2 ) } if ( ϕ contains a clause with three literals a , b , c ) { ϕ 1 = ϕ [ a -> false][ b -> false][ c -> true] ϕ 2 = ϕ [ a -> false][ b -> true] ϕ 3 = ϕ [ a -> true] return 3_satisfiability( ϕ 1 ) || 3_satisfiability( ϕ 2 ) || 3_satisfiability( ϕ 3 ) } }
  • 5. Algorithm 11.2.1 Randomized st-Connectivity This algorithm takes as an input a graph G = ( V , E ) and two vertices s , t  V . It returns true with probability one if there is a path from s to t ; if there is no path from s to t , it fails to terminate. Input Parameters: G , s , t Output Parameters: None randomized_st_connectivity ( G , s , t ) { vertex = s while ( vertex != t ) vertex = random vertex from N ( vertex ) return true }
  • 6. Algorithm 11.2.4 Randomized Hamiltonian Path This algorithm takes as input a graph G and searches for a Hamiltonian path. It returns true if it finds a Hamiltonian path and false otherwise. randomized_hamiltonian_path ( G ) { v 0 = random vertex in G i = 0 do { N = N ( v i ) - { v 0 , . . . , v i-1 } // N contains those neighbors of v i (the current last // vertex of the path) that are not already on the path if ( N ≠ Ø) { i = i + 1 v i = random vertex in N } else if ( v j  N ( v i ) for some 0 = j < i - 1) ( v 0 , . . . , v i ) = ( v 0 , . . . , v j , v i , . . . , v j+1 ) else return false } while ( i != | V | - 1) return true }
  • 7. Algorithm 11.3.8 Next Fit This algorithm computes an assignment b of n items with sizes s [1], . . . , s [ n ]  (0, 1] into bins and returns the number k of bins it used. Input Parameter: s Output Parameters: None next_fit ( s ) { n = s . last k = 1 // current bin size = 0 //accumulated size of items in current bin for i = 1 to n if ( size + s [ i ] = 1) { b [ i ] = k // enough room to add item i to bin k size = size + s [ i ] } else { k = k + 1 b [ i ] = k size = s [ i ] } return k }
  • 8. Algorithm 11.3.13 First Fit This algorithm computes an assignment b of n items with sizes s [1], . . . , s [ n ]  (0, 1] into bins and returns the number k of bins it used.
  • 9. Input Parameter: s Output Parameters: None first_fit ( s ) { n = s . last k = 1 // number of bins used c [ k ] = 0 // c [ i ] is the total size of items in bin i for i = 1 to n { j = 1 while ( c [ j ] + s [ i ] > 1) { j = j + 1 if ( j > k ) { // open new bin k = j c [ k ] = 0 } } // add item i to bin j b [ i ] = j c [ j ] = c [ j ] + s [ i ] } return k }
  • 10. Algorithm 11.3.16 First Fit Decreasing This algorithm computes an assignment b of n items with sizes s [1], . . . , s [ n ]  (0, 1] into bins and returns the number k of bins it used. Input Parameter: s Output Parameters: None first_fit_decreasing ( s ) { s . sort (>) // sort s in decreasing order return first_fit ( s ) }
  • 11. Algorithm 11.3.19 Greedy Coloring This algorithm takes as an input a graph G = ( V , E ) and constructs a coloring of the vertices of the graph such that no two adjacent vertices have the same color. Input Parameter: G = ( V , E ) Output Parameters: None greedy_coloring ( G ) { n = | V | C = {1,..., n } // set of colors for each v  V color v with smallest color in C not used by any vertex in N ( v ) }
  • 12. Algorithm 11.3.23 Wigderson Coloring This algorithm takes as input a 3-colorable graph G = ( V , E ) and constructs a coloring of the vertices of the graph such that no two adjacent vertices have the same color.
  • 13. Input Parameter: G = ( V , E ) Output Parameters: None wigderson_coloring ( G ) { n = | V | color_count = 0 while ( V contains a vertex of degree at least √ n ) { pick v of degree at least √ n G = ( N ( v ), E ) two_color ( G , color_count ) //move on to next set of colors color_count = color_count + 2 G = G - N ( v ) } greedy_coloring ( G , color_count ) // see new implementation below } greedy_coloring ( G , c ) { n = | V | C = { c ,..., c + n } // set of colors for each v  V color v with smallest color in C not used by any vertex in N ( v ) }
  • 14. Algorithm 11.4.4 Vertex Cover This algorithm determines whether a graph G = ( V , E ) has a vertex cover of size at most k . Input Parameter: G = ( V , E ) Fixed Parameter: k Output Parameters: None vertex_cover ( G , k ) { if (( k == 0) || ( E == Ø)) return E == Ø else { pick first e = ( u , v ) in E G 1 = ( V -{ u }, E -{( u , w ) | w  V }) G 2 = ( V -{ v }, E -{( v , w ) | w  V }) return vertex_cover( G 1 , k -1) || vertex_cover( G 2 , k -1) } }
  • 15. Algorithm 11.4.7 Vertex Cover, Improved This algorithm determines whether a graph G = ( V , E ) has a vertex cover of size at most k .
  • 16. Input Parameter: G = ( V , E ) Fixed Parameter: k Output Parameters: None improved_vertex_cover ( G , k ) { m = 0 V ’ = Ø for each v in V if ( larger_degree ( G , v , k )) m = m + 1 else // collect vertices of degree V ’ = V ’  { v } // at most k in V ’ if ( m > k ) return false // compute G ’ E ’ = {( u , v ) | ( u , v )  E and ( u , v )  V } G ’ = ( V , E ) // remove isolated vertices from G ’ for each v in V if (isolated( G ’, v )) G ’ = G ’ - { v } if (| V ‘| > 2 k ( k - m )) // in this case there cannot be return false // a k - m vertex cover return vertex_cover( G ’, k - m ) }
  • 17. Algorithm 11.5.5 Queens This algorithm finds a solution to the n -queens problem, which is stored in the array q . Input Parameter: n Output Parameter: q queens ( n , q ) { do { q . random_permutation () do { swaps = 0 // initialize counter for each i , j  {1,..., n } if (queen in column i or j under attack) if (swapping queens in column i and j reduces collisions) { q . swap ( i , j ) swaps = swaps + 1 } } while ( swaps > 0) } while (there are collisions in q ) }
  • 18. Local Search Heuristic This algorithm tries to improve an initial random guess by making local changes selected from a set of operations T . The function eval evaluates the goodness of a solution. local_search () { c = random element of the search space do { changed = false for each T  T { c ’ = T ( c ) Δ = eval ( c ) - eval ( c ’) if ( Δ < 0) { c = c’ changed = true } } } while ( changed ) output c }
  • 19. Iterated Local Search Heuristic This algorithm runs a local search heuristic repeatedly from random starting points. T is the set of local operations allowed. The function eval evaluates the goodness of a solution. iterated_local_search () { do { changed = false c = random element of the search space do { for each T  T { c ’ = T ( c ) Δ = eval ( c ) - eval ( c ’) if ( Δ < 0) { c = c’ changed = true } } } while ( changed ) } while ( eval ( c ) is not acceptable) output c }
  • 20. Algorithm 11.5.7 Independent Set Search This algorithm searches for a large independent set in the input graph G .
  • 21. Input Parameter: G = ( V , E ) Output Parameters: None independent_set_search () { do { I = random subset of V do { changed = false c = random element of the search space do { for each T  T { I ’ = I Δ {v} // Δ as symmetric difference Δ = eval ( I ) - eval ( I ’) if ( Δ < 0) { I = I ’ changed = true } } } while ( changed ) } while ( eval ( I ) is not acceptable) output I }
  • 22. Independent Set Search through Simulated Annealing Input Parameter: G = ( V , E ) Output Parameters: None sa_independent_set_search () { I = random subset of V n = 0 do { n = n + 1 T = T ( n ) // set current temperature for each v  V { I ’ = I Δ { v } // Δ as symmetric difference Δ = eval ( I ) - eval ( I ’) if (( Δ < 0) || ( random () < p ( T , Δ )) { I = I ’ } } } while ( eval ( I) is not acceptable) output I }