Evolving Efficient List Search Algorithms

  • Kfir Wolfson
  • Moshe Sipper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5975)


We peruse the idea of algorithmic design through Darwinian evolution, focusing on the problem of evolving list search algorithms. Specifically, we employ genetic programming (GP) to evolve iterative algorithms for searching for a given key in an array of integers. Our judicious design of an evolutionary language renders the evolution of linear-time search algorithms easy. We then turn to the far more difficult problem of logarithmic-time search, and show that our evolutionary system successfully handles this case. Subsequently, because our setup might be perceived as being geared towards the emergence of binary search, we generalize our genomic representation, allowing evolution to assemble its own useful functions via the mechanism of automatically defined functions (ADFs). We show that our approach routinely and repeatedly evolves general and correct efficient algorithms.


Search Algorithm Genetic Programming Binary Search Sorting Algorithm Darwinian Evolution 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Harel, D.: Algorithmics: The Spirit of Computing. Addison-Wesley Publishing Company, Readings (1992)zbMATHGoogle Scholar
  2. 2.
    Koza, J.R.: Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press, Cambridge (1992)zbMATHGoogle Scholar
  3. 3.
    Montana, D.J.: Strongly typed genetic programming. Evolutionary Computation 3(2), 199–230 (1995)CrossRefGoogle Scholar
  4. 4.
    Luke, S., Panait, L.: A Java-based evolutionary computation research system (March 2004),
  5. 5.
    Kinnear Jr., K.E.: Evolving a sort: Lessons in genetic programming. In: Proceedings of the 1993 International Conference on Neural Networks, San Francisco, USA, March 28-April 1, vol. 2, pp. 881–888. IEEE Press, Los Alamitos (1993)CrossRefGoogle Scholar
  6. 6.
    Koza, J.R.: Genetic Programming II: Automatic Discovery of Reusable Programms. MIT Press, Cambridge (1994)Google Scholar
  7. 7.
    Knuth, D.E.: Sorting and Searching. The Art of Computer Programming, vol. 3. Addison-Wesley, Reading (1975)Google Scholar
  8. 8.
    Kinnear Jr., K.E.: Generality and difficulty in genetic programming: Evolving a sort. In: Proceedings of the 5th International Conference on Genetic Algorithms, San Francisco, CA, USA, pp. 287–294. Morgan Kaufmann Publishers Inc., San Francisco (1993)Google Scholar
  9. 9.
    Withall, M.S., Hinde, C.J., Stone, R.G.: An improved representation for evolving programs. Genetic Programming and Evolvable Machines 10(1), 37–70 (2009)CrossRefGoogle Scholar
  10. 10.
    Agapitos, A., Lucas, S.M.: Evolving efficient recursive sorting algorithms. In: Proceedings of the 2006 IEEE Congress on Evolutionary Computation, Vancouver, July 6-21, pp. 9227–9234. IEEE Press, Los Alamitos (2006)Google Scholar
  11. 11.
    Agapitos, A., Lucas, S.M.: Evolving modular recursive sorting algorithms. In: Ebner, M., O’Neill, M., Ekárt, A., Vanneschi, L., Esparcia-Alcázar, A.I. (eds.) EuroGP 2007. LNCS, vol. 4445, pp. 301–310. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  12. 12.
    O’Reilly, U.M., Oppacher, F.: A comparative analysis of GP. In: Angeline, P.J., Kinnear Jr., K.E. (eds.) Advances in Genetic Programming, vol. 2, pp. 23–44. MIT Press, Cambridge (1996)Google Scholar
  13. 13.
    Abbott, R., Guo, J., Parviz, B.: Guided genetic programming. In: The 2003 International Conference on Machine Learning; Models, Technologies and Applications (MLMTA’03), Las Vegas, June 23-26. CSREA Press (2003)Google Scholar
  14. 14.
    Spector, L., Klein, J., Keijzer, M.: The push3 execution stack and the evolution of control. In: GECCO ’05: Proceedings of the 2005 Conference on Genetic and Evolutionary Computation, New York, NY, USA, pp. 1689–1696. ACM, New York (2005)CrossRefGoogle Scholar
  15. 15.
    Shirakawa, S., Nagao, T.: Evolution of sorting algorithm using graph structured program evolution. In: SMC, pp. 1256–1261. IEEE, Los Alamitos (2007)Google Scholar
  16. 16.
    Koza, J.R., Andre, D., Bennett III, F.H., Keane, M.: Genetic Programming 3: Darwinian Invention and Problem Solving. Morgan Kaufmann, San Francisco (1999)Google Scholar
  17. 17.
    Kirshenbaum, E.: Iteration over vectors in genetic programming. Technical Report HPL-2001-327, HP Laboratories, December 17 (2001)Google Scholar
  18. 18.
    Ahluwalia, M., Bull, L.: Coevolving functions in genetic programming. Journal of Systems Architecture 47(7), 573–585 (2001)CrossRefGoogle Scholar
  19. 19.
    Woodward, J.: Evolving Turing complete representations. In: Sarker, R., et al. (eds.) Proceedings of the 2003 Congress on Evolutionary Computation CEC2003, Canberra, December 8-12, pp. 830–837. IEEE Press, Los Alamitos (2003)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  • Kfir Wolfson
    • 1
  • Moshe Sipper
    • 1
  1. 1.Dept. of Computer ScienceBen-Gurion UniversityBeer-ShevaIsrael

Personalised recommendations