# a01029211/algoritmosmidterm2 architecture

> Architecture diagram of the GitHub repository a01029211/algoritmosmidterm2, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/a01029211/algoritmosmidterm2
- Repository: https://github.com/a01029211/algoritmosmidterm2

## Overview

This is a classroom table-layout optimizer. Its principal workflow selects table quantities by seating capacity under an area limit, then searches for a geometrically valid placement and reports the best matrix and choice vector. The README also describes a standalone Branch & Bound capability. Source excerpts show the main workflow and that separate implementation, but no connection between them; the graph keeps them separate.

Main entry points: [`backtracking.py`](https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py) (Optimization Runner), [`branch&bound.py`](https://github.com/a01029211/algoritmosmidterm2/blob/main/branch%26bound.py) (Max-Sum Solver), [`Knapsack.py`](https://github.com/a01029211/algoritmosmidterm2/blob/main/Knapsack.py) (Room Area)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_selection["Table Selection"]
  node_main["Optimization Runner<br/>[backtracking.py]"]
  node_area["Room Area<br/>[Knapsack.py]"]
  node_knapsack["Table Knapsack<br/>[Knapsack.py]"]
  node_table_list["Table Size List<br/>[backtracking.py]"]
end

subgraph group_placement["Geometric Placement"]
  node_matrix["Classroom Matrix<br/>[backtracking.py]"]
  node_parallel["Parallel Search<br/>[backtracking.py]"]
  node_valid_positions["Placement Validation<br/>[backtracking.py]"]
  node_pruning["Upper-Bound Pruning<br/>[backtracking.py]"]
  node_pool["Process Pool"]
  node_worker["Parallel Worker<br/>[backtracking.py]"]
  node_sequential["Sequential Search<br/>[backtracking.py]"]
  node_placement_ops["Placement Operations<br/>[backtracking.py]"]
end

subgraph group_reporting["Results"]
  node_best["Best Result<br/>[backtracking.py]"]
  node_choice["Choice Vector<br/>[backtracking.py]"]
  node_console["Printed Summary<br/>[backtracking.py]"]
end

subgraph group_bound["Branch &amp; Bound"]
  node_generic_bound["Max-Sum Solver<br/>[branch&amp;bound.py]"]
  node_bound_report["Distribution Printer<br/>[branch&amp;bound.py]"]
end

node_operator(("Problem Configuration"))

node_operator -->|"configures"| node_main
node_main -->|"computes area"| node_area
node_main -->|"selects tables"| node_knapsack
node_main -->|"builds sizes"| node_table_list
node_main -->|"initializes"| node_matrix
node_main -->|"starts search"| node_parallel
node_parallel -->|"checks placements"| node_valid_positions
node_parallel -->|"checks bound"| node_pruning
node_parallel -->|"dispatches branches"| node_pool
node_pool -->|"runs tasks"| node_worker
node_worker -->|"places table"| node_placement_ops
node_worker -->|"continues search"| node_sequential
node_sequential -->|"checks placements"| node_valid_positions
node_sequential -->|"checks bound"| node_pruning
node_sequential -->|"places or clears"| node_placement_ops
node_parallel -->|"updates result"| node_best
node_sequential -->|"updates result"| node_best
node_main -->|"builds vector"| node_choice
node_main -->|"prints results"| node_console
node_generic_bound -->|"prints distribution"| node_bound_report

click node_main "https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py"
click node_area "https://github.com/a01029211/algoritmosmidterm2/blob/main/Knapsack.py"
click node_knapsack "https://github.com/a01029211/algoritmosmidterm2/blob/main/Knapsack.py"
click node_table_list "https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py"
click node_matrix "https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py"
click node_parallel "https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py"
click node_valid_positions "https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py"
click node_pruning "https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py"
click node_worker "https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py"
click node_sequential "https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py"
click node_placement_ops "https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py"
click node_best "https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py"
click node_choice "https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py"
click node_console "https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py"
click node_generic_bound "https://github.com/a01029211/algoritmosmidterm2/blob/main/branch%26bound.py"
click node_bound_report "https://github.com/a01029211/algoritmosmidterm2/blob/main/branch%26bound.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_area,node_knapsack,node_table_list toneBlue
class node_matrix,node_parallel,node_valid_positions,node_pruning,node_pool,node_worker,node_sequential,node_placement_ops toneAmber
class node_best,node_choice,node_console toneMint
class node_generic_bound,node_bound_report toneRose
class node_operator toneIndigo
```

## Components

### Table Selection

- [Optimization Runner](https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py): `backtracking.py`
- [Room Area](https://github.com/a01029211/algoritmosmidterm2/blob/main/Knapsack.py): `Knapsack.py`
- [Table Knapsack](https://github.com/a01029211/algoritmosmidterm2/blob/main/Knapsack.py): `Knapsack.py`
- [Table Size List](https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py): `backtracking.py`

### Geometric Placement

- [Classroom Matrix](https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py): `backtracking.py`
- [Parallel Search](https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py): `backtracking.py`
- [Placement Validation](https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py): `backtracking.py`
- [Upper-Bound Pruning](https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py): `backtracking.py`
- **Process Pool**
- [Parallel Worker](https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py): `backtracking.py`
- [Sequential Search](https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py): `backtracking.py`
- [Placement Operations](https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py): `backtracking.py`

### Results

- [Best Result](https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py): `backtracking.py`
- [Choice Vector](https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py): `backtracking.py`
- [Printed Summary](https://github.com/a01029211/algoritmosmidterm2/blob/main/backtracking.py): `backtracking.py`

### Branch & Bound

- [Max-Sum Solver](https://github.com/a01029211/algoritmosmidterm2/blob/main/branch%26bound.py): `branch&bound.py`
- [Distribution Printer](https://github.com/a01029211/algoritmosmidterm2/blob/main/branch%26bound.py): `branch&bound.py`

### Other components

- **Problem Configuration**

## Connections

- Problem Configuration → Optimization Runner: configures
- Optimization Runner → Room Area: computes area
- Optimization Runner → Table Knapsack: selects tables
- Optimization Runner → Table Size List: builds sizes
- Optimization Runner → Classroom Matrix: initializes
- Optimization Runner → Parallel Search: starts search
- Parallel Search → Placement Validation: checks placements
- Parallel Search → Upper-Bound Pruning: checks bound
- Parallel Search → Process Pool: dispatches branches
- Process Pool → Parallel Worker: runs tasks
- Parallel Worker → Placement Operations: places table
- Parallel Worker → Sequential Search: continues search
- Sequential Search → Placement Validation: checks placements
- Sequential Search → Upper-Bound Pruning: checks bound
- Sequential Search → Placement Operations: places or clears
- Parallel Search → Best Result: updates result
- Sequential Search → Best Result: updates result
- Optimization Runner → Choice Vector: builds vector
- Optimization Runner → Printed Summary: prints results
- Max-Sum Solver → Distribution Printer: prints distribution
