Skip to content

Quick Start Guide

This guide will walk you through creating your first quantum Bayesian network and performing inference.

Your First Quantum Network

Let's build a simple network that models the relationship between weather and mood using quantum superposition.

Step 1: Import Required Components

import numpy as np
from probabilistic_quantum_reasoner import QuantumBayesianNetwork
from probabilistic_quantum_reasoner.backends import ClassicalSimulator

Step 2: Create the Network

# Initialize with classical simulator (no quantum hardware needed)
backend = ClassicalSimulator()
network = QuantumBayesianNetwork("WeatherMoodModel", backend)

Step 3: Add Quantum Variables

# Weather as a quantum variable in superposition
weather = network.add_quantum_node(
    "weather",
    outcome_space=["sunny", "cloudy", "rainy"],
    name="Weather Conditions",
    # Initial amplitudes represent quantum uncertainty
    initial_amplitudes=np.array([0.6, 0.5, 0.4], dtype=complex)
)

# Mood influenced by weather (classical variable)
mood = network.add_stochastic_node(
    "mood",
    outcome_space=["happy", "neutral", "sad"],
    name="Emotional State"
)

Step 4: Define Relationships

# Weather influences mood
network.add_edge(weather, mood)

# Set conditional probabilities for mood given weather
mood_cpt = {
    ("sunny",): {"happy": 0.8, "neutral": 0.15, "sad": 0.05},
    ("cloudy",): {"happy": 0.3, "neutral": 0.5, "sad": 0.2},
    ("rainy",): {"happy": 0.1, "neutral": 0.3, "sad": 0.6}
}
network.set_conditional_probability_table(mood, mood_cpt)

Step 5: Perform Inference

# Query: What's the probability of being happy?
result = network.infer(query_nodes=["mood"])
print("Unconditional mood probabilities:")
for state, prob in result.marginal_probabilities["mood"].items():
    print(f"  P(mood={state}) = {prob:.3f}")

# Conditional inference: Given it's sunny, what's P(happy)?
sunny_result = network.infer(
    evidence={"weather": "sunny"},
    query_nodes=["mood"]
)
print(f"\nP(mood=happy|weather=sunny) = {sunny_result.marginal_probabilities['mood']['happy']:.3f}")

Step 6: Quantum Effects

# Demonstrate quantum superposition
print("\nQuantum weather state:")
weather_state = network.get_quantum_state("weather")
for i, outcome in enumerate(["sunny", "cloudy", "rainy"]):
    amplitude = weather_state.amplitudes[i]
    probability = abs(amplitude) ** 2
    print(f"  |{outcome}⟩: amplitude={amplitude:.3f}, P={probability:.3f}")

Expected Output

Unconditional mood probabilities:
  P(mood=happy) = 0.542
  P(mood=neutral) = 0.312
  P(mood=sad) = 0.146

P(mood=happy|weather=sunny) = 0.800

Quantum weather state:
  |sunny⟩: amplitude=0.600+0.000j, P=0.360
  |cloudy⟩: amplitude=0.500+0.000j, P=0.250
  |rainy⟩: amplitude=0.400+0.000j, P=0.160

Key Concepts Demonstrated

Quantum Superposition

The weather variable exists in a superposition of all possible states, with amplitudes determining the probability of each outcome.

Hybrid Reasoning

Classical probabilistic reasoning (conditional probability tables) combined with quantum uncertainty representation.

Born Rule

Quantum probabilities follow the Born rule: P(outcome) = |amplitude|²

Next Steps

Now that you've created your first quantum Bayesian network, explore:

  1. Quantum Entanglement: Create correlated quantum variables
  2. Causal Inference: Perform interventions and counterfactual reasoning
  3. Advanced Examples: More complex real-world scenarios
  4. Quantum Backends: Using real quantum hardware

Common Patterns

Evidence-Based Reasoning

# Multiple evidence variables
evidence = {"weather": "rainy", "temperature": "cold"}
result = network.infer(evidence=evidence, query_nodes=["mood", "activity"])

Batch Inference

# Multiple queries at once
queries = ["mood", "activity", "energy_level"]
result = network.infer(query_nodes=queries)

Temporal Reasoning

# Add time-dependent variables
morning_weather = network.add_quantum_node("morning_weather", ...)
evening_mood = network.add_stochastic_node("evening_mood", ...)
network.add_edge(morning_weather, evening_mood)

Continue with Basic Examples to see more sophisticated use cases.