TL;DR: A generic message-passing algorithm, the sum-product algorithm, that operates in a factor graph, that computes-either exactly or approximately-various marginal functions derived from the global function.
Abstract: Algorithms that must deal with complicated global functions of many variables often exploit the manner in which the given functions factor as a product of "local" functions, each of which depends on a subset of the variables. Such a factorization can be visualized with a bipartite graph that we call a factor graph, In this tutorial paper, we present a generic message-passing algorithm, the sum-product algorithm, that operates in a factor graph. Following a single, simple computational rule, the sum-product algorithm computes-either exactly or approximately-various marginal functions derived from the global function. A wide variety of algorithms developed in artificial intelligence, signal processing, and digital communications can be derived as specific instances of the sum-product algorithm, including the forward/backward algorithm, the Viterbi algorithm, the iterative "turbo" decoding algorithm, Pearl's (1988) belief propagation algorithm for Bayesian networks, the Kalman filter, and certain fast Fourier transform (FFT) algorithms.
TL;DR: This paper describes a simple solution to this dilemma: limit the depth of partitioning, and for subproblems that exceed the limit switch to another algorithm with a better worst‐case bound.
TL;DR: This document describes the MD2 message-digest algorithm, which takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input.
Abstract: This document describes the MD2 message-digest algorithm. The
algorithm takes as input a message of arbitrary length and produces as
output a 128-bit "fingerprint" or "message digest" of the input. This
memo provides information for the Internet community. It does not
specify an Internet standard.
TL;DR: This book discusses the foundations of Algorithmic Problem Solving, as well as a short tutorial on Recurrence Relations, and some examples of how to deal with P, NP, and NP-complete problems.
Abstract: Contents Preface 1Introduction 1.1 What is an Algorithm? 1.2 Fundamentals of Algorithmic Problem Solving 1.3 Important Problem Types 1.4 Fundamental Data Structures 2 Fundamentals of the Analysis of Algorithm Efficiency 2.1 Analysis Framework 2.2 Asymptotic Notations and Basic Efficiency Classes 2.3 Mathematical Analysis of Nonrecursive Algorithms 2.4 Mathematical Analysis of Recursive Algorithms 2.5 Example: Fibonacci Numbers 2.6 Empirical Analysis of Algorithms 2.7 Algorithm Visualization 3 Brute Force 3.1 Selection Sort and Bubble Sort 3.2 Sequential Search and Brute-Force String Matching 3.3 Closest-Pair and Convex-Hull Problems by Brute Force 3.4 Exhaustive Search 4 Divide-and-Conquer 4.1 Mergesort 4.2 Quicksort 4.3 Binary Search 4.4 Binary Tree Traversals and Related Properties 4.5 Multiplication of Large Integers and Strassen's Matrix Multiplication 4.6 Closest-Pair and Convex-Hull Problems by Divide-and-Conquer 5 Decrease-and-Conquer 5.1 Insertion Sort 5.2 Depth-First Search and Breadth-First Search 5.3 Topological Sorting 5.4 Algorithms for Generating Combinatorial Objects 5.5 Decrease-by-a-Constant-Factor Algorithms 5.6 Variable-Size-Decrease Algorithms 6 Transform-and-Conquer 6.1 Presorting 6.2 Gaussian Elimination 6.3 Balanced Search Trees 6.4 Heaps and Heapsort 6.5 Horner's Rule and Binary Exponentiation 6.6 Problem Reduction 7 Space and Time Tradeoffs 7.1 Sorting by Counting 7.2 Input Enhancement in String Matching 7.3 Hashing 7.4 B-Trees 8 Dynamic Programming 8.1 Computing a Binomial Coefficient 8.2 Warshall's and Floyd's Algorithms 8.3 Optimal Binary Search Trees 8.4 The Knapsack Problem and Memory Functions 9 Greedy Technique 9.1 Prim's Algorithm 9.2 Kruskal's Algorithm 9.3 Dijkstra's Algorithm 9.4 Huffman Trees 10 Iterative Improvement 10.1 The Simplex Method 10.2 The Maximum-Flow Problem 10.3 Maximum Matching in Bipartite Graphs 10.4 The Stable Marriage Problem 11 Limitations of Algorithm Power 11.1 Lower-Bound Arguments 11.2 Decision Trees 11.3 P, NP, and NP-complete Problems 11.4 Challenges of Numerical Algorithms 4 12 Coping with the Limitations of Algorithm Power 12.1 Backtracking 12.2 Branch-and-Bound 12.3 Approximation Algorithms for NP-hard Problems 12.4 Algorithms for Solving Nonlinear Equations Epilogue APPENDIX A Useful Formulas for the Analysis of Algorithms APPENDIX B Short Tutorial on Recurrence Relations Bibliography Hints to Exercises Index
TL;DR: Making this algorithm faster will significantly improve the overall efficiency of NSGA-II and other genetic algorithms using non-dominated sorting and has better efficiency because of the adoption of the dominance tree structure and the divide-and-conquer mechanism.
Abstract: We present a new non-dominated sorting algorithm to generate the non-dominated fronts in multi-objective optimization with evolutionary algorithms, particularly the NSGA-II. The non-dominated sorting algorithm used by NSGA-II has a time complexity of O(MN2) in generating non-dominated fronts in one generation (iteration) for a population size N and M objective functions. Since generating non-dominated fronts takes the majority of total computational time (excluding the cost of fitness evaluations) of NSGA-II, making this algorithm faster will significantly improve the overall efficiency of NSGA-II and other genetic algorithms using non-dominated sorting. The new non-dominated sorting algorithm proposed in this study reduces the number of redundant comparisons existing in the algorithm of NSGA-II by recording the dominance information among solutions from their first comparisons. By utilizing a new data structure called the dominance tree and the divide-and-conquer mechanism, the new algorithm is faster than NSGA-II for different numbers of objective functions. Although the number of solution comparisons by the proposed algorithm is close to that of NSGA-II when the number of objectives becomes large, the total computational time shows that the proposed algorithm still has better efficiency because of the adoption of the dominance tree structure and the divide-and-conquer mechanism.