Skip to content

Anjali Dewangan — R51-T049: Measure the work done by getVerticesSortedByDfsFinishTime (stronglyConnectedComponents.js) [src/algorithms/graph/strongly-connected-components] #49

Open

Description

@ankushbisht01

Student: Anjali Dewangan

Task: R51-T049 · 9 of 10
Repository: https://github.com/S-AI-Projects/javascript-algorithms
Assigned working branch: student/e26b07f0661

Goal

Work on src/algorithms/graph/strongly-connected-components/stronglyConnectedComponents.js. Measure the scaling of getVerticesSortedByDfsFinishTime on valid inputs while checking correctness. Distinguish algorithm operations from process startup, I/O and compilation. Fixture: Use [3, 1, 2], [2, 2, 1], already ordered [1, 2, 3], reversed [3, 2, 1], and the smallest supported collection. Expected ascending outputs are [1, 2, 3] and [1, 2, 2]; honor a descending interface if that is what the source defines.

Steps

  1. Read src/algorithms/graph/strongly-connected-components/stronglyConnectedComponents.js, especially getVerticesSortedByDfsFinishTime near line 8. Record its public inputs, result, mutation behavior and any external dependencies before changing it.
  2. Define input size for this algorithm. Select three increasing sizes within a short CPU-only run; use operation counts if timing is dominated by overhead or the domain is fixed.
  3. Use fixed seeds, fresh inputs and five repetitions per size. Check outputs outside the timed interval and report median plus range.
  4. Implement work/R51-T049/check.py as a focused runner that executes the new checks and propagates failures. Native check to incorporate: run the repository test script in non-watch mode after installing from its lockfile; for browser-only code use a browser test instead of plain Node. Record the actual command and nonzero test count.
  5. Create the checks specified below and run python3 work/R51-T049/check.py. Save inputs, expected versus actual results and tool versions in work/R51-T049/; a check must exit non-zero when an assertion fails.
  6. Commit the repository change on branch R51-T049; prepare a PR to the organisation fork explaining the result and linking the checks. Keep each task independently reviewable. Remove work/R51-T049/ from a later upstream branch.

Done when

☐ The checked behavior is tied to getVerticesSortedByDfsFinishTime in src/algorithms/graph/strongly-connected-components/stronglyConnectedComponents.js; every assertion has an explicit expected value.
☐ Use [3, 1, 2], [2, 2, 1], already ordered [1, 2, 3], reversed [3, 2, 1], and the smallest supported collection. Expected ascending outputs are [1, 2, 3] and [1, 2, 2]; honor a descending interface if that is what the source defines.
☐ Existing supported behavior and the public interface are preserved unless a failing regression demonstrates and documents a defect.
☐ The complexity statement names its input-size variable and distinguishes worst-case claims from observations.
☐ No pass/fail threshold depends on wall-clock speed; all measured cases pass correctness checks.

Additional task guidance

Additional curated task guidance

Item:
src/algorithms/graph/strongly-connected-components

Task type:
Complexity experiment

Code change (goes into the PR):
src/algorithms/graph/strongly-connected-components/stronglyConnectedComponents.js: add or correct a complexity comment supported by the experiment; add one representative regression to the normal tests. Keep timings in work/R51-T049/.

Automated check:
python3 work/R51-T049/check.py

Prerequisites:
Node matching project CI, the project lockfile dependencies, and Python 3.

Upstream PR rules:
Keep the contribution scoped to the named item and follow the linked contribution instructions and repository CI. Submit coursework to the organisation fork first; keep work/ evidence out of any later upstream PR. Upstream acceptance is not a grading requirement. Policy: https://github.com/trekhleb/javascript-algorithms/blob/85293e3e2b88f4d2ce330d956b139cf628aa1e82/CONTRIBUTING.md

Source (pinned):
https://github.com/trekhleb/javascript-algorithms/blob/85293e3e2b88f4d2ce330d956b139cf628aa1e82/src/algorithms/graph/strongly-connected-components/stronglyConnectedComponents.js#L8

Change:
Replaces the shared task template with an item-specific contribution brief.

PR destination:
Upstream candidate after review

Submission checklist

  • Complete this task and its checks.
  • Add the required evidence and link your pull request here.
  • Select this S-AI-Projects fork as the PR base repository.
  • Request instructor review.

Keep this PR focused on this task. Do not submit assignment PRs to the upstream repository.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions