Skip to main content

Algorithmic AI — an algorithmic mind that learns, reasons, and discovers

Project description

aalgoi — Algorithmic AI (v2.2)

PyPI version Python 3.11+ License: MIT

An algorithmic mind that learns, reasons, and discovers.

aalgoi solves algorithmic problems from natural language descriptions. It uses a grounded architecture: parse → retrieve candidates → rank → execute → validate → learn. RL selects among validated algorithms — it does not hallucinate unvalidated code.

v2.2 — Complete architectural refactor: typed contracts, canonical algorithm registry, unified Knowledge Graph (NetworkX + SQLite), per-task oracles, contextual bandit learner, AST-safety sandbox (no eval()), and a 99/99 (100%) core benchmark across 33 task types. No PyTorch required.

import aalgoi

result = aalgoi.solve("sort the array", [3, 1, 4, 1, 5])
print(result)            # [1, 1, 3, 4, 5]
print(result.algorithm)  # tim_sort
print(result.validated)  # True

Install

pip install aalgoi

Requires Python 3.11+, NetworkX 3.0+, NumPy 1.24+, scikit-learn 1.2+. All CPU — no GPU needed. PyTorch is optional (pip install aalgoi[torch]).

Quick Start

One-liner solve

import aalgoi

# Sort
aalgoi.solve("sort the list", [5, 2, 8, 1, 9])
# → [1, 2, 5, 8, 9]

# Search
aalgoi.solve("binary search for target", {"data": [1,3,5,7,9], "target": 7})
# → 3

# GCD
aalgoi.solve("compute gcd", {"a": 48, "b": 18})
# → 6

# Two sum
aalgoi.solve("find two sum", {"data": [2, 7, 11, 15], "target": 9})
# → [0, 1]

# Maximum subarray
aalgoi.solve("kadane maximum subarray", [-2, 1, -3, 4, -1, 2, 1, -5, 4])
# → 6

# Fibonacci (fast doubling, not Binet)
aalgoi.solve("fibonacci number", {"n": 71})
# → 308061521170129

# lcm(0,0) — no divide-by-zero
aalgoi.solve("compute lcm", {"a": 0, "b": 0})
# → 0

# Anagram with normalization
aalgoi.solve("check anagram", {"s1": "Dormitory", "s2": "Dirty room"})
# → True

# Shortest path (weighted)
aalgoi.solve("shortest path weighted dijkstra", {
    "graph": {"A": {"B": 10, "C": 1}, "C": {"B": 1}},
    "start": "A", "end": "B"
})
# → {'path': ['A', 'C', 'B'], 'length': 2}

# Maximum flow
aalgoi.solve("maximum flow", {
    "graph": {"s": {"a": 3, "b": 2}, "a": {"t": 2}, "b": {"t": 3}},
    "source": "s", "sink": "t"
})
# → {'flow_value': 4}

# KMP string matching
aalgoi.solve("kmp pattern search", {
    "text": "abcxabcdabxabcdabcdabcy",
    "pattern": "abcdabcy"
})
# → 15

Shortcuts (one-function-per-task)

from aalgoi.shortcuts import sort, search, knapsack, cluster

sort([3, 1, 2])                        # [1, 2, 3]
search([1, 2, 3], 2)                   # 1
knapsack([{"weight": 10, "value": 60},
          {"weight": 20, "value": 100},
          {"weight": 30, "value": 120}], 50)
# → {'selected': [1, 2], 'value': 220, 'weight': 50}

Persistent Mind

mind = aalgoi.Mind("~/my_mind")

# Solve — accumulates experience
mind.solve("sort the list", [3, 1, 4, 1, 5])
mind.solve("shortest path unweighted", graph_data)

# Benchmark — 99-problem core suite
report = mind.benchmark()
print(report)

# Train — contextual bandit learning
mind.train(mode="bandit", suite="core-v1")

# Checkpoint — save state
mind.checkpoint()

# Rollback — revert to last known-good state
mind.rollback("last_good")

# Inspect knowledge
mind.algorithms    # 42 registered algorithms
mind.principles    # 17 principles (divide_conquer, dynamic_programming, ...)
mind.problems      # 33 problem types

# Status
print(mind.status())

Algorithm Coverage

aalgoi ships 42 algorithms across 33 task types, all validated with per-task oracles:

Domain Tasks
Sorting sort, counting_sort
Searching linear_search, binary_search, two_sum, lower_bound
Math gcd, lcm, is_prime, sieve, fast_exponentiation, fibonacci
Strings palindrome, anagram, kmp, rabin_karp, edit_distance, lcs
Graph bfs, dfs, shortest_path_unweighted, shortest_path_weighted (Dijkstra), shortest_path_negative (Bellman-Ford), topological_sort, cycle_detection, connected_components, mst (Kruskal), max_flow (Edmonds-Karp)
DP kadane, knapsack_01, coin_change, lis
Optimization knapsack_fractional
ML (optional) knn_classifier, linear_regression, kmeans
NLP (optional) sentiment_analyzer, text_summarizer
Image (optional) gaussian_blur, edge_detection

Optional algorithms require scikit-learn, transformers, or Pillow respectively.

Architecture

The solve pipeline is fully deterministic and grounded:

Problem text + Data
       │
       ▼
  ┌──────────────┐
  │  Parse        │  ← regex + data-based task inference
  └──────┬───────┘
         │
         ▼
  ┌──────────────┐
  │  Retrieve     │  ← Knowledge Graph (NetworkX + SQLite)
  └──────┬───────┘
         │
         ▼
  ┌──────────────┐
  │  Rank         │  ← RuleRanker + UCB1Bandit (contextual)
  └──────┬───────┘
         │
         ▼
  ┌──────────────┐
  │  Execute      │  ← Sandboxed (AST-check + multiprocess timeout)
  └──────┬───────┘
         │
         ▼
  ┌──────────────┐
  │  Validate     │  ← Per-task oracles verify correctness
  └──────┬───────┘
         │
         ▼
  ┌──────────────┐
  │  Record       │  ← SQLite run history + bandit reward update
  └──────────────┘
  • No eval() — code safety uses AST analysis + multiprocess sandbox with restricted globals
  • No torch required — core works without PyTorch; RL uses UCB1 bandit (optional PPO via aalgoi[torch])
  • No unvalidated results — synthesis is gated behind validation; never returns unvalidated code as success

Module Structure

Module Purpose
aalgoi/ Public API — solve, Mind, session, CLI, shortcuts
aalgoi/algorithms/ 42 algorithm classes with @algorithm decorator, typed specs
aalgoi/types.py Core contracts — ProblemTask, ProblemSpec, AlgorithmSpec, SolveResult, BenchmarkReport
aalgoi/problems/ Parser, per-task oracles, generators, examples
aalgoi/kg/ Knowledge Graph (NetworkX), SQLite store, query engine, updater
aalgoi/selection/ Planner, RuleRanker, UCB1Bandit, feature extractor
aalgoi/security/ AST sandbox, security policies
aalgoi/eval/ Benchmark suite, metrics, reports
aalgoi/mind/ Mind orchestration, checkpointing, session, learning
aalgoi/rl/ Environment, policy, trainer, replay buffer, reward shaper
aalgoi/synthesis/ Template manager, synthesis validator, promotion manager
aalgoi/data/ Data normalization, type/shape detection, file loaders

CLI

# Solve
aalgoi solve "sort the list" --data '[3,1,4,1,5]'
aalgoi solve "compute gcd" --data '{"a": 48, "b": 18}'
aalgoi solve "check if prime" --data '{"n": 17}' --explain

# Registry
aalgoi registry

# Knowledge Graph
aalgoi kg stats
aalgoi kg inspect --algorithm tim_sort

# Benchmark
aalgoi benchmark --verbose

# Train
aalgoi train --mode bandit --suite core-v1

# Version
aalgoi version

Data Normalization

from aalgoi.data import normalize, detect_type

normalize((1, 2, 3))       # [1, 2, 3]
normalize({3, 1, 2})       # [1, 2, 3]
normalize(b'{"key": 42}')  # {"key": 42}
detect_type([1, 2, 3])     # "list(3)"

Requirements

  • Python 3.11+
  • NetworkX 3.0+
  • NumPy 1.24+
  • scikit-learn 1.2+

Optional:

  • pip install aalgoi[torch] — PyTorch 2.0+ for PPO training
  • pip install aalgoi[data] — pandas, polars, pyarrow
  • pip install aalgoi[nlp] — transformers, gensim, chromadb
  • pip install aalgoi[all] — everything

Repository Structure

aalgoi/               # Package root
aalgoi/algorithms/    # 42 algorithm implementations + registry
aalgoi/problems/      # Parser, oracles, generators
aalgoi/kg/            # Knowledge Graph + SQLite store
aalgoi/selection/     # Planner, ranker, bandit
aalgoi/security/      # AST sandbox, policies
aalgoi/eval/          # Benchmark suite, metrics
aalgoi/mind/          # Mind, session, checkpoint
aalgoi/rl/            # RL environment, policy, trainer
aalgoi/synthesis/     # Template manager, validator
aalgoi/data/          # Data normalization, detectors
experimental/         # Legacy code (v1/v2) quarantined for reference

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aalgoi-2.2.4.tar.gz (49.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aalgoi-2.2.4-py3-none-any.whl (61.8 kB view details)

Uploaded Python 3

File details

Details for the file aalgoi-2.2.4.tar.gz.

File metadata

  • Download URL: aalgoi-2.2.4.tar.gz
  • Upload date:
  • Size: 49.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for aalgoi-2.2.4.tar.gz
Algorithm Hash digest
SHA256 019ea9484bd92742dae7ee660c47f077aaff1ffd9d6ff3b3f3278419caf44972
MD5 816779dac7b26beb31375893ceed89a1
BLAKE2b-256 40850854fb40f8b833bb7713d0ece5ba14c5cf8695fbb1eb18cb4a9ebaa80be3

See more details on using hashes here.

File details

Details for the file aalgoi-2.2.4-py3-none-any.whl.

File metadata

  • Download URL: aalgoi-2.2.4-py3-none-any.whl
  • Upload date:
  • Size: 61.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for aalgoi-2.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a826be4c7d2082c60da4371b79d1474b86ab17e53c9bfbb8016d0ab5cc8bff08
MD5 daf26c4623b749ba2e66fdc51716cccb
BLAKE2b-256 cec87015c4de837fae7d19ac6b693e365e07e743a1ef065d84e06755359c5482

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page