/// <summary> /// Перевірка найкращих альтернатив на зовнішню стійкість /// </summary> public bool IsBestAlternativesExternallyStable(HashSet <int> bestAlternatives, Relation relation) { HashSet <int> notBestAlternatives = Enumerable.Range(0, relation.Dimension) .Except(bestAlternatives) .ToHashSet(); // Якщо верхній переріз якої-небудь з альтернатив, що не входять до найкращих, не містить // у собі жодної з найкращих альтернатив, то множина розв'язків не є зовнішньо стійкою foreach (int alternative in notBestAlternatives) { if (relation.GetUpperSection(alternative).Intersect(bestAlternatives).Count() == 0) { return(false); } } return(true); }
/// <summary> /// Перевірка найкращих альтернатив на внутрішню стійкість /// </summary> public bool IsBestAlternativesInternallyStable(HashSet <int> bestAlternatives, Relation relation) { // Якщо верхній переріз якої-небудь з найкращих альтернатив містить // у собі іншу найкращу альтернативу, то множина розв'язків не є внутрішньо стійкою foreach (int alternative in bestAlternatives) { if (relation.GetUpperSection(alternative).Intersect(bestAlternatives).Count() > 0) { return(false); } } return(true); }