A Simulated Annealing Algorithm for the Problem of Minimal Addition Chains

  • Adan Jose-Garcia
  • Hillel Romero-Monsivais
  • Cindy G. Hernandez-Morales
  • Arturo Rodriguez-Cristerna
  • Ivan Rivera-Islas
  • Jose Torres-Jimenez
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7026)


Cryptosystems require the computation of modular exponentiation, this operation is related to the problem of finding a minimal addition chain. However, obtaining the shortest addition chain of length n is an NP-Complete problem whose search space size is proportional to n!. This paper introduces a novel idea to compute the minimal addition chain problem, through an implementation of a Simulated Annealing (SA) algorithm. The representation used in our SA is based on Factorial Number System (FNS). We use a fine-tuning process to get the best performance of SA using a Covering Array (CA), Diophantine Equation solutions (DE) and Neighborhood Functions (NF). We present a parallel implementation to execute the fine-tuning process using a Message Passing Interface (MPI) and the Single Program Multiple Data (SPMD) model. These features, allowed us to calculate minimal addition chains for benchmarks considered difficult in very short time, the experimental results show that this approach is a viable alternative to solve the solution of the minimal addition chain problem.


Simulated Annealing Message Passing Interface Simulated Annealing Algorithm Diophantine Equation Neighborhood Function 
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]
    Michalewicz, Z.: Genetic Algorithms + Data Structures = Evolution Program, 3rd edn. Springer, Heidelberg (1996)CrossRefzbMATHGoogle Scholar
  2. [2]
    Nedjah, N., de Macedo Mourelle, L.: Minimal Addition Chain for Efficient Modular Exponentiation Using Genetic Algorithms. In: Hendtlass, T., Ali, M. (eds.) IEA/AIE 2002. LNCS (LNAI), vol. 2358, pp. 88–98. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  3. [3]
    Gordon, D.M.: A Survey of Fast Exponentiation Methods. Journal of Algorithms, 129–146 (1998)Google Scholar
  4. [4]
    Downey, P., Leong, B., Sethi, R.: Computing Sequences with Addition Chains”. SIAM Journal on Computing, 638–646 (1981)Google Scholar
  5. [5]
    Cruz-Cortés, N., Rodríguez-Henríquez, F., Juárez-Morales, R., Coello Coello, C.A.: Finding Optimal Addition Chains Using a Genetic Algorithm Approach. In: Hao, Y., Liu, J., Wang, Y.-P., Cheung, Y.-m., Yin, H., Jiao, L., Ma, J., Jiao, Y.-C. (eds.) CIS 2005. LNCS (LNAI), vol. 3801, pp. 208–215. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  6. [6]
    de Castro, L.N., Timmis, J.: An Introduction to Artificial, Immune Systems: A New Computational Intelligence Paradigm. Springer, Heidelberg (2002) ISBN: 978-1-85233-594-6zbMATHGoogle Scholar
  7. [7]
    Nedjah, N., Mourelle, L.M.: Efficient Pre-processing for Large Window-Based Modular Exponentiation Using Genetic Algorithms. In: Chung, P.W.H., Hinde, C.J., Ali, M. (eds.) IEA/AIE 2003. LNCS, vol. 2718, pp. 165–194. Springer, Heidelberg (2003)Google Scholar
  8. [8]
    Bos, J.N.E., Coster, M.J.: Addition Chain Heuristics. In: Brassard, G. (ed.) CRYPTO 1989. LNCS, vol. 435, pp. 400–407. Springer, Heidelberg (1990)Google Scholar
  9. [9]
    Bleichenbacher, D., Flammenkamp, A.: An efficient Algorithm for Computing Shortest Additions Chains, Bell Labs (1997),
  10. [10]
    Bergeron, F., Berstel, J., Brlek, S.: Efficient Computation of Addition Chains. Journal de Théorie des Nombres de Bordeaux tome 6, 21–38 (1994)MathSciNetCrossRefzbMATHGoogle Scholar
  11. [11]
    Lopez-Escogido, D., Torres-Jimenez, J., Rodriguez-Tello, E., Rangel-Valdez, N.: Strength Two Covering Arrays Construction Using a SAT Representation. In: Gelbukh, A., Morales, E.F. (eds.) MICAI 2008. LNCS (LNAI), vol. 5317, pp. 44–53. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  12. [12]
    Quinn Reference, M.J.: Parallel Programming in C with MPI and OpenMP. Mc Graw Hill Higher Education (2004) ISBN 0-07-282256-2Google Scholar
  13. [13]
    Grabysz, A.D., Rabenseifner, R.: Nesting OpenMP in MPI to Implement a Hybrid Communication Method of Parallel Simulated Annealing on a Cluster of SMP Nodes. In: Nagel, W.E., Walter, W.V., Lehner, W. (eds.) Euro-Par 2006. LNCS, vol. 4128, pp. 1075–1084. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  14. [14]
    Strout, M.M., Kreaseck, B., Hovland, P.D.: Data-Flow Analysis for MPI Programs. In: IEEE Computer Society, International Conference on Parallel Processing, pp. 175–184. IEEE Compurer Society (2006) ISBN 0-7695-2636-5Google Scholar
  15. [15]
    Thurber, E.W.: Shortest Addition Chains,
  16. [16]
    Laisan, C.A.: Sur la Numeration Factorielle, Application Aux Permutations. Bulletin de la Societe Mathematique de France, 176–183 (1888)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Adan Jose-Garcia
    • 1
  • Hillel Romero-Monsivais
    • 1
  • Cindy G. Hernandez-Morales
    • 1
  • Arturo Rodriguez-Cristerna
    • 1
  • Ivan Rivera-Islas
    • 1
  • Jose Torres-Jimenez
    • 1
  1. 1.Information Technology LaboratoryCINVESTAVCd. Victoria Tamps.Mexico

Personalised recommendations