Chapter 4: Combinatorics Using SciPy
This chapter is about counting (or combinatorics), which seems simple, but rapidly gains complexity when counting the number of ways to combine, order, or select various finite sets. This includes the study of permutations and combinations, which can be applied to determining the memory required to store various types of data.
We will apply these ideas to measure the efficacy of brute-force algorithms applied to cryptography and the traveling salesman problem.
In this chapter, we will cover the following topics:
- The fundamental counting rule
- Counting permutations and combinations of objects
- Applications to memory allocation
- Efficacy of brute-force algorithms
By the end of the chapter, you will be able to count various mathematical structures, distinguish between combinations and permutations, and be able to count them. You will also be able to apply these ideas to practical problems in memory allocation and measure...