The document discusses approximation algorithms for NP-complete problems. It introduces the idea of finding near-optimal solutions in polynomial time for problems where optimal solutions cannot be found efficiently. It provides examples of the vertex cover problem and set cover problem, describing greedy approximation algorithms that provide performance guarantees for finding near-optimal solutions for these problems. The document also discusses some open questions around whether these approximation ratios can be improved.
This is a short presentation on Vertex Cover Problem for beginners in the field of Graph Theory...
Download the presentation for a better experience...
This is a short presentation on Vertex Cover Problem for beginners in the field of Graph Theory...
Download the presentation for a better experience...
Divide and Conquer Algorithms - D&C forms a distinct algorithm design technique in computer science, wherein a problem is solved by repeatedly invoking the algorithm on smaller occurrences of the same problem. Binary search, merge sort, Euclid's algorithm can all be formulated as examples of divide and conquer algorithms. Strassen's algorithm and Nearest Neighbor algorithm are two other examples.
This slides contains assymptotic notations, recurrence relation like subtitution method, iteration method, master method and recursion tree method and sorting algorithms like merge sort, quick sort, heap sort, counting sort, radix sort and bucket sort.
We are given n distinct positive numbers (weights)
The objective is to find all combination of weights whose sum is equal to given weights m
State space tree is generated for all the possibilities of the subsets
Generate the tree by keeping weight <= m
Design and Analysis of Algorithm help to design the algorithms for solving different types of problems in Computer Science. It also helps to design and analyze the logic of how the program will work before developing the actual code for a program.
Divide and Conquer Algorithms - D&C forms a distinct algorithm design technique in computer science, wherein a problem is solved by repeatedly invoking the algorithm on smaller occurrences of the same problem. Binary search, merge sort, Euclid's algorithm can all be formulated as examples of divide and conquer algorithms. Strassen's algorithm and Nearest Neighbor algorithm are two other examples.
This slides contains assymptotic notations, recurrence relation like subtitution method, iteration method, master method and recursion tree method and sorting algorithms like merge sort, quick sort, heap sort, counting sort, radix sort and bucket sort.
We are given n distinct positive numbers (weights)
The objective is to find all combination of weights whose sum is equal to given weights m
State space tree is generated for all the possibilities of the subsets
Generate the tree by keeping weight <= m
Design and Analysis of Algorithm help to design the algorithms for solving different types of problems in Computer Science. It also helps to design and analyze the logic of how the program will work before developing the actual code for a program.
In this paper, we show that the number of edges for any odd harmonious Eulerian graph is congruent to 0 or 2 (mod 4), and we found a counter example for the inverse of this statement is not true. We also proved that, the graphs which are constructed by two copies of even cycle Cn sharing a common edge are odd harmonious. In addition, we obtained an odd harmonious labeling for the graphs which are constructed by two copies of cycle Cn sharing a common vertex when n is congruent to 0 (mod 4). Moreover, we show that, the Cartesian product of cycle graph Cm and path Pn for each n ≥ 2, m ≡ 0 (mod 4) are odd harmonious graphs. Finally many new families of odd harmonious graphs are introduced.
10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...Nicolas Bettenburg
Duplicate Bug Reports are widely considered harmful, adding additional burden on developers, and holding up software development processes. 10 Years ago we demonstrated that duplicate reports contain valuable additional information that helps developers get their jobs done faster and better. Thus duplicate reports should not be thrown away, but instead merged with their original reports to make that helpful information available to practitioners. This talk is a 10 year retrospective.
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...Nicolas Bettenburg
Software development is a largely collaborative effort, of which the actual encoding of program logic in source code is a relatively small part. Software developers have to collaborate effectively and communicate with their peers in order to avoid coordination problems. To date, little is known how developer communication during software development activities impacts the quality and evolution of a software.
In this thesis, we present and evaluate tools and techniques to recover communication data from traces of the software development activities. With this data, we study the impact of developer communication on the quality and evolution of the software through an in-depth investigation of the role of developer communication during software development activities. Through multiple case-studies on a broad spectrum of open-source software projects, we find that communication between developers stands in a direct relationship to the quality of the software. Our findings demonstrate that our models based on developer communication explain software defects as well as state-of-the art models that are based on technical information such as code and process metrics, and that social information metrics are orthogonal to these traditional metrics, leading to a more complete and integrated view on software defects. In addition, we find that communication between developers plays a important role in maintaining a healthy contribution management process, which is one of the key factors to the successful evolution of the software. Source code contributors who are part of the community surrounding open-source projects are available for limited times, and long communication times can lead to the loss of valuable contributions.
Our thesis illustrates that software development is an intricate and complex process that is strongly influenced by the social interactions between the stakeholders involved in the development activities. A traditional view based solely on technical aspects of software development such as source code size and complexity, while valuable, limits our understanding of software development activities. The research presented in this thesis consists of a first step towards gaining a more holistic view on software development activities.
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeNicolas Bettenburg
Talk on Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code, given at the 16th European Conference on Software Maintenance and Reengineering (CSMR'12) in Hungary.
An Empirical Study on Inconsistent Changes to Code Clones at Release LevelNicolas Bettenburg
This is a talk I gave at the 2009 Working Conference on Reverse Engineering in Lille, France about our work on the effects of inconsistent changes on software quality if we observe them at a release level.
Bug Reports are usually treated as text. This is sub-optimal, since bug reports contain many structural elements, such as stack traces, source code, patches, enumerations or screenshots, that should not be treated as natural language text. Using this structured information can be used to faciliate better research processes and automated bug fixing techniques. We propose the infoZilla tool, that can detect and extract structural elements from bug reports and display its high presicion and recall.
Talk given at ICSM 2008 Conference in Beijing, China.
Duplicate Bug reports are commonly to pollute bug reporting systems and have negative effects on a development teams' productivity. Therefore, duplicate bug reports are ignored, once identified. The findings in this research work show, that duplicate reports actually contain extra information that is not present in the original bug reports and developers can potentially benefit from this information. We conduct experiments and a case study on ECLIPSE to quantify the amount of extra information. We show that this extra information can be used to enhance techniques related to bug fixing, such as triaging.
Introduction to AI for Nonprofits with Tapp NetworkTechSoup
Dive into the world of AI! Experts Jon Hill and Tareq Monaur will guide you through AI's role in enhancing nonprofit websites and basic marketing strategies, making it easy to understand and apply.
Acetabularia Information For Class 9 .docxvaibhavrinwa19
Acetabularia acetabulum is a single-celled green alga that in its vegetative state is morphologically differentiated into a basal rhizoid and an axially elongated stalk, which bears whorls of branching hairs. The single diploid nucleus resides in the rhizoid.
Macroeconomics- Movie Location
This will be used as part of your Personal Professional Portfolio once graded.
Objective:
Prepare a presentation or a paper using research, basic comparative analysis, data organization and application of economic information. You will make an informed assessment of an economic climate outside of the United States to accomplish an entertainment industry objective.
Francesca Gottschalk - How can education support child empowerment.pptxEduSkills OECD
Francesca Gottschalk from the OECD’s Centre for Educational Research and Innovation presents at the Ask an Expert Webinar: How can education support child empowerment?
Model Attribute Check Company Auto PropertyCeline George
In Odoo, the multi-company feature allows you to manage multiple companies within a single Odoo database instance. Each company can have its own configurations while still sharing common resources such as products, customers, and suppliers.
Synthetic Fiber Construction in lab .pptxPavel ( NSTU)
Synthetic fiber production is a fascinating and complex field that blends chemistry, engineering, and environmental science. By understanding these aspects, students can gain a comprehensive view of synthetic fiber production, its impact on society and the environment, and the potential for future innovations. Synthetic fibers play a crucial role in modern society, impacting various aspects of daily life, industry, and the environment. ynthetic fibers are integral to modern life, offering a range of benefits from cost-effectiveness and versatility to innovative applications and performance characteristics. While they pose environmental challenges, ongoing research and development aim to create more sustainable and eco-friendly alternatives. Understanding the importance of synthetic fibers helps in appreciating their role in the economy, industry, and daily life, while also emphasizing the need for sustainable practices and innovation.
Palestine last event orientationfvgnh .pptxRaedMohamed3
An EFL lesson about the current events in Palestine. It is intended to be for intermediate students who wish to increase their listening skills through a short lesson in power point.
"Protectable subject matters, Protection in biotechnology, Protection of othe...
Approximation Algorithms
1. Approximation
Algorithms
presented by
Nicolas Bettenburg
1
2. Many problems with practical significance
are NP-complete.
Unlikely to find a polynomial-time
solution algorithm (nobody knows).
2
3. Work around NP
completeness
• Small Inputs: stay with exponential
algorithm!
• Often special cases are solvable in
polynomial time.
• Find a near-optimal solution in
polynomial time that is good enough.
3
4. Approximation Algorithms
• For a lot of practical applications near-optimal
solutions are perfectly acceptable.
• Algorithms that return near-optimal solutions for a
problem are called approximation algorithms.
• Want to study polynomial time approximation
algorithms for NP-complete problems.
4
5. What is ‘’good enough’’?
For an approximation algorithm A
of input of size n
the cost of solution produced by A is C
Approximation Ratio of A is p(n)
C C∗
max ,
∗ C
≤ p(n)
C
5
7. List of 21 Problems
that are NP-complete
Richard Karp, 1972
.
.
.
• CLIQUE
• SET PACKING
• VERTEX COVER
• SET COVERING
• FEEDBACK NODE SET
• FEEDBACK ARC SET
• KNAPSACK
• PARTITION
• MAX-CUT
.
.
.
7
9. Vertex Cover
a subset U of all vertices V, such
that every edge in E is covered.
b c d
a e f g
Covered Edge
an edge e = (vi, vj) is covered if ei or ej is chosen.
9
10. Minimum Vertex Cover
Problem
Input: a Graph G = (V, E)
Output: the smallest subset U ⊆ V
such that ∀e = (vi , vj ) ∈ E, i = j
vi ∈ U or vj ∈ U
10
15. Greedy-Vertex-Cover(G)
1 C = {}
2 do chose v in V with max deg
3 C = C + {v}
4 remove v and every edge
5 adjacent to v
6 until all edges covered
7 return C
15
21. b c d
a e f g
Goodness of solution depends
on the (random) choices made.
21
22. Approx-Vertex-Cover(G)
1 C = {}
2 E’ = E[G]
3 while E’ != {}
4 do let (u,v) be some e in E’
5 C = C + {u, v}
6 remove from E’ every edge
7 incident to either u or v
8 end do
9 end while
10 return C
22
23. Approx-Vertex-Cover(G)
1 C = {}
2 E’ = E[G]
3 while E’ != {}
4 do let (u,v) be some e in E’
5 C = C + {u, v}
6 remove from E’ every edge
7 incident to either u or v
8 end do
9 end while
10 return C O(|V | + |E|)
23
24. b c d
a e f g
C = {}
E = {(a-b), (b-c), (c-e), (c-d),(e-f),(e-d), (f-d), (d-g)}
24
25. b c d
a e f g
C = {}
E = {(a-b), (b-c), (c-e), (c-d),(e-f),(e-d), (f-d), (d-g)}
25
26. b c d
a e f g
C = {b, c}
E = {(e-f),(e-d), (f-d), (d-g)}
26
27. b c d
a e f g
C = {b, c}
E = {(e-f),(e-d), (f-d), (d-g)}
27
30. b c d
a e f g
C = {b, c, e, f, d, g}
E = {}
30
31. C = {b, c, e, f, d, g}
|C| = 6 = 2 · 3 ≤ 2 · |C ∗ |
the algorithm found a 2-approximation.
b c d
a e f g
31
32. Approx-Vertex-Cover(G)
1 C = {}
2 E’ = E[G]
3 while E’ != {}
4 do let (u,v) be some e in E’
5 C = C + {u, v}
6 remove from E’ every edge
7 incident to either u or v
8 end do
9 end while
10 return C
C is a vertex cover of G
Proof:
The algorithm loops until every edge in E’ = E[G] has been
covered (removed) by some vertex in C.
32
33. Approx-Vertex-Cover(G)
1 C = {}
2 E’ = E[G]
3 while E’ != {}
4 do let (u,v) be some e in E’
5 C = C + {u, v}
6 remove from E’ every edge
7 incident to either u or v
8 end do
9 end while
10 return C
C is at most 2 times C*
Proof:
Let A be the set of edges picked by algorithm step 4. C*
must include at least one endpoint of each edge in set A. No
two edges share an endpoint, since all adjacent edges are
deleted after picking in line 6. Thus no two edges in A are
covered by the same vertex in C*.
|C ∗ | ≥ |A|
33
34. Approx-Vertex-Cover(G)
1 C = {}
2 E’ = E[G]
3 while E’ != {}
4 do let (u,v) be some e in E’
5 C = C + {u, v}
6 remove from E’ every edge
7 incident to either u or v
8 end do
9 end while
10 return C
C is at most 2 times C*
Proof:
Each execution of line 4 picks an edge for which neither of
the endpoints are in C already.
|C| = 2 · |A|
|C ∗ | ≥ |A|
34
46. The Set Cover Problem
Input: a finite Set X
Output: a family F of subsets of X,
such that every element of X
belongs to at least one subset in F: X = ∪S∈F S
46
47. Set X
S1
S4 S2
S6
S3 S5
Subsets S1, S2, S3, S4, S5, S6
47
48. Set X
S1
S4 S2
S6
S3 S5
Minimum-Size Cover: S3, S4, S5
48
49. Greedy-Set-Cover(G)
1 U = X
2 C = {}
3 while U != {} do
4 select an S in F
5 that maximizes |S ∩U|
6 U = U-S
7 C = C ∪{S}
8 end while
9 return C
O(|X| · |F |)
49