I just wanted to expect that quantum computers always do everything in one step. Here's the problem which needs some more, even from a quantum computer. Now, we have a function here which maps n bits to n bits. This function has this strange period. It's like period in z model two. So, it is some number A for which holds this property. If you add this number A, or if you solves some input with this number A, then we don't change the function value. The function's value are equal only if the inputs meet this equality. Okay. The problem is to find A. If a function is implemented again, as a black box as in oracle, then the problem is really hard. The complexity of this problem is not in fact obvious because first of all, we need enough memory to store the function values and with big n's, like if you have n, for example, 1,000, then we need to store these number of values of this function. This might not be possible. So, this problem easily becomes intractable. But even if you do have enough memory to solve this problem, we will need approximately this number of function queries in the worst case to finally find the values. Find the inputs for which the function values would be equal. So, all this sounds too set, so let's quickly proceed to the quantum case. So, here's the Simon's Algorithm. Let's apply it and then talk. So, we have n zeroes, n zeroes here and we have other model only on this first n zeros. So, it's one divided by two, n divided by two, x from zero to two, n minus one. So, here's our formula for the Handamard transform. X and zero stays here in this register and then we apply quantum oracle. It's really simple here in this case. So again, this sum x and f of x. Now, we have a quantum state, which holds all the values of the function f in it. Isn't that amazing? We just discussed that for classical case, this number of bit or bits makes the problem intractable, but we can easily imagine this number of qubits. The system with this number of qubits can easily store all the function values inside of its state. This is where the computer power of quantum computers come from. Okay, we are now ready to perform this measurement. Honestly, we don't need this measurement step here. We do it for the sake of clarity. If we measure this output register, we will get only one function value in it, like f of sum x zero. In this register, we will have two values corresponding to this value f of x is zero itself, plus x zero plus a. So, this is what we will have in the input register and of course, the coefficient. Now, this is our system state after this measurement of the value register. Now, we have this value in our system state and we need to apply other Hadamard transform to this. Let's do it, so it's going to be this. Again, we use this formula for Hadamard transform. This one here, xy plus again, over all y's minus one and this value here xy plus ay and y again. I'm going to combine these two sums in one. I will have minus one xy plus minus one xy. So, ay and the vector y. Okay. Let's take a look at this. If this a thick dot y not equals to zero then this minus ones will have different powers and they will self-destruct. So, in this sum, stay only y's such as a thick dot y equals to zero. If we measure the sum after this Hadamard transform, we will get one of these y's, the y's which satisfy this condition and this looks like an equation to solve. We need n linearly independent of this y's to obtain the, well, the complete value of this a. So, you will need to run this algorithm, this circuit scheme, this number of times. So, we are not lucky, maybe an infinity of times of course, okay? So, this circuit is here gives us this complexity for the quantum case. So, we have learned several quantum algorithms and now we can reflect a little on what we already know. First, in all these quantum algorithms, employ the so-called quantum parallelism, which allows us to feed all the possible inputs to the oracle in just one time, just one step. This factor alone can be very exciting because a very small quantum system can store data and handle data, which the whole classical universe cannot accommodate. This is very hard to explain without this multiverse explanation of quantum mechanics. Second, these quantum algorithms employ entanglement, which is really impossible to implement in the classical systems and hard to implement in quantum systems. But this entanglement is very important for obtaining some function properties later after the measurement because during the process of computation, we need to magnify the amplitudes, of one vectors and to decrease the amplitudes of another vectors to increases the probability for one vectors to be measured and degrees the probabilities of other vectors to be measured. These vectors to be magnified and decreased, they depend on the function of interest, which is stored inside this quantum system. So, the system has to decide itself which vectors to magnify and which vectors to decrease. After all this, we perform a measurement and measure those vectors which amplitudes were magnified. Here on the slide, you can see the screenshot of the simulator of quantum computer implemented by my student, Yuri Konapylov. Here, I believe this is just a problem for the operative function and you can find this simulator on the Internet, on the link which is on the slide and you can look at the examples of the algorithms and you can design your own algorithms. This simulator allows up to 24 qubits. Now, with all this background, we can approach the real and useful algorithms which we will do on the following two weeks. Now, good luck with your modular test and I hope to see you next week. Bye.