const auto D_hat = [&]() {
const size_t size = std::min(k, D.size());
std::vector<const UnfoldingEvent*> D_hat(size);
- // Potentially select intelligently here (e.g. perhaps pick events
- // with transitions that we know are totally independent)...
+ // TODO: Since any subset suffices for computing `k`-partial alternatives,
+ // potentially select intelligently here (e.g. perhaps pick events
+ // with transitions that we know are totally independent). This may be
+ // especially important if the enumeration is the slowest part of
+ // UDPOR
//
- // For now, simply pick the first `k` events (any subset suffices)
+ // For now, simply pick the first `k` events
std::copy_n(D.begin(), size, D_hat.begin());
return D_hat;
}();
bool UnfoldingEvent::immediately_conflicts_with(const UnfoldingEvent* other) const
{
- // Computes "this #ⁱ other"
// They have to be in conflict at a minimum
if (not conflicts_with(other)) {
return false;
bool in_history_of(const UnfoldingEvent* other) const;
bool related_to(const UnfoldingEvent* other) const;
+ /// @brief Whether or not this event is in conflict with
+ /// the given one (i.e. whether `this # other`)
bool conflicts_with(const UnfoldingEvent* other) const;
+
+ /// @brief Whether or not this event is in conflict with
+ /// any event in the given configuration
bool conflicts_with(const Configuration& config) const;
+
+ /// @brief Computes "this #ⁱ other"
bool immediately_conflicts_with(const UnfoldingEvent* other) const;
bool is_dependent_with(const Transition*) const;
bool is_dependent_with(const UnfoldingEvent* other) const;