The discrete logarithm problem (DLP) in a finite group is the basis for many protocols in crypto-graphy. The best general algorithms which solve this problem have a time complexity of O(root N logN) and a space complexity of O(root N), where N is the order of the group. (If N is unknown, a simple modification would achieve a time complexity of (root N(logN)(2)).) These algorithms require the inversion of some group elements or rely on finding collisions and the existence of inverses, and thus do not adapt to work in the general semigroup setting. For semigroups, probabilistic algorithms with similar time complexity have been proposed. The main result of this article is a deterministic algorithm for solving the DLP in a semi-group. Specifically, let x be an element in a semigroup having finite order N-x. The article provides an algorithm, which, given any element y is an element of < x), provides all natural numbers m with x(m) = y, and has time complexity (root N-x(logN(x))(2)) steps. The article also gives an analysis of the success rates of the existing probabilistic algorithms, which were so far only conjectured or stated loosely.