Algorithms
An open textbook from Wikibooks, a chapter a page, in reading order.
12 pagineAggiornata
Versione: 1CC BY-SA 4.0
This book aims to be an accessible introduction to the design and analysis of efficient algorithms. Throughout the book we will introduce only the most basic techniques and describe the rigorous mathematical methods needed to analyze them. The topics covered include: - The **divide and conquer** tec
Versione: 1CC BY-SA 4.0
[Top](
Chapters:
1,
[2](
[3](
[4](
[5](
[6](
[7](
[8](
[9](
[A]( This book covers techniques for the design and analysis of algorithms. The algorithmic techniques covered include: divide and conquer, backtracking, dynamic programming, greedy algorithms, and hill-climbing. Any solvable problem genera
Versione: 1CC BY-SA 4.0
[Top](
Chapters:
[1](
2,
[3](
[4](
[5](
[6](
[7](
[8](
[9](
[A]( Before we begin learning algorithmic techniques, we take a detour to give ourselves some necessary mathematical tools. First, we cover mathematical definitions of terms that are used later on in the book. By expanding your mathematical
Versione: 1CC BY-SA 4.0
[Top](
Chapters:
[1](
[2](
3,
[4](
[5](
[6](
[7](
[8](
[9](
[A]( The first major algorithmic technique we cover is **divide and conquer**. Part of the trick of making a good divide and conquer algorithm is determining how a given problem could be separated into two or more similar, but smaller, subp
Versione: 1CC BY-SA 4.0
[Top](
Chapters:
[1](
[2](
[3](
4,
[5](
[6](
[7](
[8](
[9](
[A]( As deterministic algorithms are driven to their limits when one tries to solve hard problems with them, a useful technique to speed up the computation is **randomization**. In randomized algorithms, the algorithm has access to a random
Versione: 1CC BY-SA 4.0
[Top](
Chapters:
[1](
[2](
[3](
[4](
5,
[6](
[7](
[8](
[9](
[A]( **Backtracking** is a general algorithmic technique that considers searching every possible combination in order to solve an optimization problem. Backtracking is also known as **depth-first search** or **branch and bound**. By inserti
Versione: 1CC BY-SA 4.0
[Top](
Chapters:
[1](
[2](
[3](
[4](
[5](
6,
[7](
[8](
[9](
[A]( **Dynamic programming** can be thought of as an optimization technique for particular classes of backtracking algorithms where subproblems are repeatedly solved. Note that the term dynamic in dynamic programming should not be confused
Versione: 1CC BY-SA 4.0
[Top](
Chapters:
[1](
[2](
[3](
[4](
[5](
[6](
7,
[8](
[9](
[A]( In the backtracking algorithms we looked at, we saw algorithms that found decision points and recursed over all options from that decision point. A **greedy algorithm** can be thought of as a backtracking algorithm where at each decisi
Versione: 1CC BY-SA 4.0
[Top](
Chapters:
[1](
[2](
[3](
[4](
[5](
[6](
[7](
[8](
9,
[A](
Please edit and omit unweighted in title ## Representation of Graph ### Adjacency Matrix The rows/columns are the source/target vertex, the matrix is a square matrix with non-negative entries, 0 if there is no edge between the vertices
Versione: 1CC BY-SA 4.0
Calculating distances is common in spatial and other search algorithms, as well as in computer game physics engines. However, the common Euclidean distance requires calculating **square roots**, which is often a relatively heavy operation on a CPU. ## You don't need a square root to compare distance
Versione: 1CC BY-SA 4.0
[Top](
Chapters:
[1](
[2](
[3](
[4](
[5](
[6](
[7](
[8](
[9](
A Welcome to the Ada implementations of the [Algorithms]( Wikibook. For those who are new to [Ada Programming]( a few notes: - All examples are fully functional with all the needed input and output operations. However, only the code neede
Sostieni questa pubblicazione
Ogni mese, tramite Stripe. Dopo la commissione di Stripe e il 14% di Hub Nexus, metà di ogni pagamento va ai curatori e metà agli autori delle pagine, in base a quante ne ha scritte ciascuno.
