Part IV. Running the Algorithm

今回は全4部のうちの最終回Part 4です。

Deutsch-JozsaのTutorialは4部に分かれています。
Part 1: 問題の定義と古典アルゴリズムについて
Part 2: 量子オラクルについて
Part 3: 量子アルゴリズムについて
Part 4: 実際にDeutsch-Jozsaを量子アルゴリズムで動かしてみる

Fact関数を使って実際に動かしてみる

ここまで来たら難しいことは何もなく、テストコードを書いて動かすだけです。
balancedの関数は期待値をfalseにしてメッセージを修正する必要があります。

open Microsoft.Quantum.Diagnostics;

operation Run_DeutschJozsaAlgorithm () : String {
    // You can use Fact function to check that the return value of DeutschJozsaAlgorithm operation matches the expected value.
    // Uncomment the next line to run it.
    
    Fact(DeutschJozsaAlgorithm(4, PhaseOracle_Zero) == true, "f(x) = 0 not identified as constant");
    
    // Run the algorithm for the rest of the oracles
    Fact(DeutschJozsaAlgorithm(4, PhaseOracle_One) == true, "f(x) = 0 not identified as constant");
    Fact(DeutschJozsaAlgorithm(4, PhaseOracle_Xmod2) == false, "f(x) = 1 not identified as balanced");
    Fact(DeutschJozsaAlgorithm(4, PhaseOracle_OddNumberOfOnes) == false, "f(x) = 1 not identified as balanced");
    Fact(DeutschJozsaAlgorithm(4, PhaseOracle_MostSignificantBit) == false, "f(x) = 1 not identified as balanced");
    
    // If all tests pass, report success!
    return "Success!";
}