lambdaclass / lambdaclass/lambda_compiler_kit

perf: optimize nested foldl in Glushkov/Matcher.lean step/initialStep (O(n²) → O(n log n))

Offen
#14 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Lean
Sterne
2
Forks
1
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Problem

The step and initialStep functions in Lck/Regex/Glushkov/Matcher.lean (lines 45-55, 65-75) use nested foldl operations that produce O(n²) complexity for large NFAs.

Impact

For a pattern with n positions, each step scans all active states and for each computes a set union — resulting in O(n²) per character of input.

Suggested Fix

Consider using a more efficient data structure (e.g., a bitset or sorted set with efficient union) to bring the per-step cost to O(n log n).

References

Raised in AI code review.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne in Lck/Regex/Glushkov/Matcher.lean, konzentriere dich auf step und initialStep in den zitierten Zeilen und verfolge ihre verschachtelten foldl-Operationen. Vergleiche Kandidaten für Datenstrukturen von Zustandsmengen mit dem aktuellen Verhalten; als erledigt gilt die Aufgabe, wenn die Matchergebnisse erhalten bleiben und die Komplexität pro Schritt von O(n²) in Richtung O(n log n) reduziert wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Bereich
compilers, performance
Issue-Typ
Refactoring
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.