# Distinguishing Quantum States

@[section]({
    "id": "distinguishing_states__overview",
    "title": "Overview"
})

This kata is designed to get you familiar with the concept of measurements and using them for analyzing quantum states and with Q# programming.

**This kata covers the following topics:**

- single-qubit measurements,
- distinguishing orthogonal and non-orthogonal states.

**What you should know to start working on this kata:**

- Dirac notation for single-qubit and multi-qubit quantum systems
- Basic single-qubit and multi-qubit gates
- Single-qubit quantum measurements and their effect on quantum systems

@[section]({
    "id": "distinguishing_states__orthogonal_states",
    "title": "Distinguishing Orthogonal States"
})

In this lesson, you will practice distinguishing sets of states that are pairwise orthogonal.
In this scenario, the states can be distinguished perfectly, with 100% accuracy.

@[exercise]({
    "id": "distinguishing_states__zero_one",
    "title": "|0〉 or |1〉?",
    "path": "./zero_one/"
})

@[exercise]({
    "id": "distinguishing_states__plus_minus",
    "title": "|+〉 or |-〉?",
    "path": "./plus_minus/"
})

@[exercise]({
    "id": "distinguishing_states__a_b",
    "title": "|A〉 or |B〉?",
    "path": "./a_b/"
})

@[exercise]({
    "id": "distinguishing_states__zerozero_oneone",
    "title": "|00〉 or |11〉?",
    "path": "./zerozero_oneone/"
})

@[exercise]({
    "id": "distinguishing_states__four_basis_states",
    "title": "Distinguish Four Basis States",
    "path": "./four_basis_states/"
})

@[exercise]({
    "id": "distinguishing_states__two_basis_states_bit_strings",
    "title": "Distinguish Two Basis States Given by Bit Strings",
    "path": "./two_basis_states_bit_strings/"
})

@[exercise]({
    "id": "distinguishing_states__two_superposition_states_bit_strings_one",
    "title": "Distinguish Two States Given by Two Arrays of Bit Strings in One Measurement",
    "path": "./two_superposition_states_bit_strings_one/"
})

@[exercise]({
    "id": "distinguishing_states__two_superposition_states_bit_strings",
    "title": "Distinguish Two States Given by Two Arrays of Bit Strings",
    "path": "./two_superposition_states_bit_strings/"
})

@[exercise]({
    "id": "distinguishing_states__all_zeros_w",
    "title": "|0...0〉 State or W State?",
    "path": "./all_zeros_w/"
})

@[exercise]({
    "id": "distinguishing_states__ghz_w",
    "title": "GHZ State or W State?",
    "path": "./ghz_w/"
})

@[exercise]({
    "id": "distinguishing_states__four_bell_states",
    "title": "Distinguish Four Bell States",
    "path": "./four_bell_states/"
})

@[exercise]({
    "id": "distinguishing_states__four_orthogonal_two_qubit",
    "title": "Distinguish Four Two-Qubit States",
    "path": "./four_orthogonal_two_qubit/"
})

@[exercise]({
    "id": "distinguishing_states__four_orthogonal_two_qubit_part_two",
    "title": "Distinguish Four Two-Qubit States - 2",
    "path": "./four_orthogonal_two_qubit_part_two/"
})

@[exercise]({
    "id": "distinguishing_states__two_orthogonal_three_qubit",
    "title": "Distinguish Two Three-Qubit States",
    "path": "./two_orthogonal_three_qubit/"
})

@[section]({
    "id": "distinguishing_states__nonorthogonal_states",
    "title": "Distinguishing Non-Orthogonal States"
})

This lesson offers you several variants of the task of distinguishing sets of states that are not orthogonal.

@[exercise]({
    "id": "distinguishing_states__zero_plus",
    "title": "|0〉 or |+〉?",
    "path": "./zero_plus/"
})

@[exercise]({
    "id": "distinguishing_states__zero_plus_inc",
    "title": "|0〉, |+〉 or Inconclusive?",
    "path": "./zero_plus_inc/"
})

@[exercise]({
    "id": "distinguishing_states__peres_wooters_game",
    "title": "Peres/Wooters game",
    "path": "./peres_wooters_game/"
})

@[section]({
    "id": "distinguishing_states__conclusion",
    "title": "Conclusion"
})

Congratulations! In this kata you learned to use measurements and basic quantum computing gates to distinguish quantum states. 
