Skip to content

Add method for removing redundant nodes#571

Open
arcondello wants to merge 28 commits into
dwavesystems:mainfrom
arcondello:feature/node-equality-and-successor-transfer
Open

Add method for removing redundant nodes#571
arcondello wants to merge 28 commits into
dwavesystems:mainfrom
arcondello:feature/node-equality-and-successor-transfer

Conversation

@arcondello

Copy link
Copy Markdown
Member

Closes #563

AI Generation Disclosure

No AI used.

@arcondello arcondello added the enhancement New feature or request label Jun 24, 2026
@arcondello
arcondello force-pushed the feature/node-equality-and-successor-transfer branch 2 times, most recently from 4dab596 to a8040b8 Compare June 24, 2026 18:09
@arcondello
arcondello force-pushed the feature/node-equality-and-successor-transfer branch from a8040b8 to 82cc356 Compare June 24, 2026 18:14
@arcondello
arcondello force-pushed the feature/node-equality-and-successor-transfer branch from 56195c1 to 57638a8 Compare June 24, 2026 18:18
@arcondello
arcondello force-pushed the feature/node-equality-and-successor-transfer branch from 39fb39d to 055fe62 Compare July 2, 2026 17:35
@arcondello
arcondello force-pushed the feature/node-equality-and-successor-transfer branch from ee71c02 to 770a9cb Compare July 3, 2026 17:05
Comment thread dwave/optimization/include/dwave-optimization/nodes/binaryop.hpp
@arcondello
arcondello force-pushed the feature/node-equality-and-successor-transfer branch from 261d2d6 to 98e4bd0 Compare July 3, 2026 18:09
@arcondello
arcondello force-pushed the feature/node-equality-and-successor-transfer branch from 98e4bd0 to 47e1be7 Compare July 3, 2026 18:14
@arcondello
arcondello force-pushed the feature/node-equality-and-successor-transfer branch from 90386b6 to cd107a0 Compare July 6, 2026 16:43
Comment thread dwave/optimization/include/dwave-optimization/graph.hpp
@arcondello
arcondello force-pushed the feature/node-equality-and-successor-transfer branch from 42a0edd to f7a75d1 Compare July 8, 2026 17:33
Comment thread dwave/optimization/src/nodes/lp.cpp Outdated
@arcondello
arcondello force-pushed the feature/node-equality-and-successor-transfer branch from 4e887e4 to f643bca Compare July 9, 2026 22:40
@arcondello
arcondello marked this pull request as ready for review July 10, 2026 17:45
@arcondello

arcondello commented Jul 10, 2026

Copy link
Copy Markdown
Member Author

As a note: I didn't try to be inclusive about the asserts in the replace_predecessor_() method. That way lies madness so I just went with some sanity checks.

Comment thread tests/cpp/test_graph.cpp Outdated
@arcondello
arcondello requested a review from fastbodin July 10, 2026 18:27
@arcondello
arcondello force-pushed the feature/node-equality-and-successor-transfer branch from 212caf4 to d0dd3d3 Compare July 10, 2026 19:05

@fastbodin fastbodin left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Managed to work through all files excluding the test files. Thought I would upload these comments before moving onto them.

Comment thread dwave/optimization/_model.pyx Outdated
Comment thread dwave/optimization/src/graph.cpp
Comment thread dwave/optimization/src/graph.cpp
Comment thread dwave/optimization/src/graph.cpp Outdated
Comment thread dwave/optimization/include/dwave-optimization/nodes/binaryop.hpp
Comment thread dwave/optimization/src/nodes/lambda.cpp
Comment thread dwave/optimization/src/nodes/linear_algebra.cpp
Comment thread dwave/optimization/src/nodes/manipulation.cpp
Comment thread dwave/optimization/src/nodes/naryop.cpp
Comment thread dwave/optimization/src/nodes/unaryop.cpp Outdated
Comment thread tests/cpp/nodes/test_manipulation.cpp

@fastbodin fastbodin left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have now gone through all the files. I would like to go through graph.cpp again.

The patience you had when writing these tests is a marvel.

Comment thread tests/cpp/nodes/test_collections.cpp
Comment thread tests/cpp/nodes/test_interpolation.cpp
Comment thread tests/cpp/nodes/test_manipulation.cpp
Comment thread dwave/optimization/src/nodes/creation.cpp
Comment thread dwave/optimization/_model.pyx
Comment thread tests/cpp/nodes/test_statistics.cpp Outdated
Comment thread tests/cpp/nodes/test_unaryop.cpp Outdated
Comment thread tests/cpp/test_graph.cpp Outdated
@arcondello
arcondello force-pushed the feature/node-equality-and-successor-transfer branch from 9f8d77e to dde96ff Compare July 19, 2026 18:32
Symbols are redundant if they are the same type, they share the
same predecessors, and they encode the same operation.

If a symbol will not be removed if it has :class:`ArraySymbol` object(s)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe If is not necessary.

@fastbodin fastbodin left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Baring the above typo, LGTM! 🥳 . It took me a minute because I wanted to go over graph.cpp again in some detail. 👍

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

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add methods to support the removal of redundant nodes

2 participants