SkienaBook / Algorithm-Design-Manual-Programs-V3

Programs for the third edition of the Algorithm Design Manual
Other
119 stars 29 forks source link

Copyright 2003-2020 by Steven S. Skiena; all rights reserved. Permission is granted for use in non-commerical applications provided this copyright notice remains intact and unchanged.

These programs all appear in my books:

"The Algorithm Design Manual" by Steven Skiena, second edition, Springer, London 2008. See out website www.algorist.com for additional information or https://www.amazon.com/exec/obidos/ASIN/1848000693/thealgorith01-20

"Programming Challenges: The Programming Contest Training Manual" by Steven Skiena and Miguel Revilla, Springer-Verlag, New York 2003. See our website www.programming-challenges.com for additional information, or http://www.amazon.com/exec/obidos/ASIN/0387001638/thealgorithmrepo/

What follows are a list of all the files in this directory with a brief description of what they are:

10055.c program demonstrating standard IO in C 10055.cc program demonstrating standard IO in C++ 10055.java program demonstrating standard IO in Java 10055.pascal program demonstrating standard IO in Pascal

8-queens.c solve the eight queens problem using backtracking

Makefile instructions on how to compile all of our programs

README this file; a description of all programs in distribution

annealing.c a generic implementation of simulated annealing annealing.h header file for simulated annealing

backtrack.c a generic implementation of backtracking backtrack.h header file for generic backtracking

bfs-demo.c driver program demonstrating breadth-first search bfs-dfs.c a generic implementation of graph traversal bfs-dfs.h header file for graph traversal

biconnected.c find biconnected components in a graph

bignum.c implementation of large integer arithmetic binomial.c compute the binomial coefficients using dynamic programming bipartite.c two-color a given graph if it is possible

bool-old.h previous boolean type header

cgtest.c driver program for computational geometry routines

code-fragments directory to store extracted code snippets for book

connected.c compute connected components of a graph convex-hull.c compute convex hulls of points in the plane convolve.c implementation of simple convolution countedges.c simple traveral example to count edges in graph.

datafiles/ directory with test files for all programs, see test-script.sh

dfs-demo.c driver program demonstrating depth-first search dijkstra.c compute shortest paths in weighted graphs

distance.c compute Euclidian distances distance.h header file for geometry programs

editbrute.c compute string edit distance without dynamic programming editdistance.c a generic implementation of string comparison via dp editdistance.h header file for string comparison

elevator.c elevator stop optimization via dynamic programming

extract_code.py utlity routine to extract code snippets for book

fib.c Fibonacci number computation findcycle.c identify a cycle in a graph, if one exists floyd.c compute all-pairs shortest paths in weighted graphs gcd.c compute the greatest common divisor of two integers

geometry.c basic geometric primitives and data types geometry.h header file for geometric data types geotest.c driver program for geometry routines

graph.c a generic adjacency list-in-array graph data type graph.h header file for graph data type item.h header file for generic item type

kruskal.c minimum spanning tree by kruskal's algorithm

list-demo.c linked list implementation list.h header file for linked lists

lcs.c longest common subsequence of two strings matrix.c matrix multiplication implementation name.c corporate name changing program -- string example netflow.c network flow implementation -- augmenting path algorithm order.c demonstrate traversal orders on a grid

original earlier version of these codes

permutations.c construct all permutations via backtracking plates.c compute the number of circles in two different packings polly.c rank the desirability of suitors -- sorting example prim.c compute minimum spanning trees of graphs via Prim's algorithm primes.c compute the prime factorization of an integer

priority_queue.c heap implementation priority_queue.h header file for priority queues

queue.c implementation of a FIFO queue abstract data type queue.h header file for queue implementation

random.c compute random numbers within given ranges random.h header file for random numbers sentinel.c example search program using sentinels

set_union.c implementation of union-find data structure set_union.h header file for union-find

sorting.c implementations of primary sorting algorithms

stack.c implementation of a LIFO stack abstract data type stack.h header file for stack

stringedit.c compute the optimal alignment matching two strings strong.c find the strongly connected components of a directed graph (Tarjan) strong1.c find the strongly connected components of a directed graph (Kosaraju-Sharir)

subsets.c construct all subsets via backtracking subsetsum.c implementation of subset sum via dynamic programming substringedit.c approximately match one string as a substring of another sudoku.c solve sudoku puzzles by backtracking

superman.c compute Superman's flight path -- geometry example

test-script* run tests on each of the programs created by Makefile

tmp/ directory of old stuff that should probably be deleted

topsort.c topologically sort a DAG (delete in-degree 0 vertices) topsort1.c topologically sort a DAG (back edge on DFS)

tree-demo.c binary search tree implementation tree.h header file for binary trees

triangulate.c triangulate a polygon via ear-clipping, and compute area

tsp-astar.c backtracking approaches to TSP, including A tsp-astar.h header file for A search tsp-pq.c priority queue implementation for A TSP solutions tsp-pq.h header file for A TSP priority queue

tsp.c simulated annealing approach to TSP tsp.h header for simulated annealing TSP

war.c simulation of the children's card game War

wgraph.c a generic weighted graph data type wgraph.h header file for weighted graph type