>  기사  >  Java  >  상보 그래프를 사용하여 그래프에서 최대 독립 집합을 찾는 Java 프로그램

상보 그래프를 사용하여 그래프에서 최대 독립 집합을 찾는 Java 프로그램

WBOY
WBOY앞으로
2023-09-20 16:41:10586검색

상보 그래프를 사용하여 그래프에서 최대 독립 집합을 찾는 Java 프로그램

이것은 그래프 보완 방법을 사용하여 그래프에서 가장 큰 자율 집합을 찾는 C에서 실행되는 Java 프로그램입니다. 먼저, 프로그램은 주어진 입력 그래프의 보수를 구성합니다. 그런 다음 상보 그래프의 각 정점을 강조하고 현재 정점을 계산하거나 제외하여 최대 자유 집합(MIS)을 반복적으로 찾습니다. 프로그램은 지금까지 발견된 가장 큰 무료 세트의 추정치를 추적하고 이를 최종 결과로 반환합니다. 보완 그래프를 활용함으로써 최대 자율 집합을 찾는 문제를 원본 그래프에서 최대 클릭을 찾는 문제로 변환하여 효율적인 솔루션을 얻을 수 있습니다.

사용방법

  • 무차별 대입 크래킹 방법

폭력적인 방법

그래프에서 가장 큰 자율 집합을 찾는 무차별 대입 방법은 그래프에서 가능한 모든 정점 부분 집합을 생성하고 각 부분 집합이 자유 집합을 형성하는지 확인하는 것으로 구성됩니다. C로 구현된 Java 프로그램에서는 가능한 모든 하위 집합에 대해 계산이 반복되고 하위 집합의 각 꼭지점이 동일한 하위 집합에 인접한 꼭지점이 없는지 확인합니다. 모든 하위 집합을 포괄적으로 조사함으로써 프로그램은 이 조건을 충족하는 정점 수가 가장 많은 가장 큰 자유 집합을 구별합니다. 그러나 기하급수적인 시간 복잡성으로 인해 이 접근 방식은 확장된 그래프에는 적합하지 않지만 기본적으로 작은 그래프에는 적합한 것으로 보입니다.

알고리즘

  • 발견된 가장 큰 자율 집합의 평가 값을 저장하는 데 사용되는 변수 maxSetSize를 0으로 초기화합니다.

  • 그래프에서 가능한 모든 정점의 하위 집합을 생성합니다. 이는 비트 마스킹 프로세스를 사용하거나 가능한 모든 정점 조합을 반복적으로 강조함으로써 수행될 수 있습니다.

  • 각 하위 집합의 경우:

  • 하위 집합이 자율 집합을 형성하는지 확인하세요. 하위 집합의 각 정점을 반복합니다.

  • 하위 집합의 각 정점 v에 대해 하위 집합에도 인접한 정점 u가 있는지 확인하세요. 그러한 인접한 정점이 발견되면 부분 집합이 독립적이지 않기 때문에 루프가 끊어집니다.

  • 하위 집합에서 어떤 정점의 이웃 정점도 발견되지 않으면 현재 하위 집합 메트릭이 maxSetSize보다 큰지 maxSetSize를 확인하세요.

  • maxSetSize 값은 발견된 가장 큰 독립 집합의 추정치를 나타냅니다.

  • 선택적으로 최대 자유 세트에서 실제 정점 세트를 가져와야 하는 경우 최대 극한 크기를 가진 하위 세트와 비교하여 정점을 추적합니다.

  • 최대 자율 집합의 측정값으로 maxSetSize를 반환합니다. 실제 정점 세트를 따르는 경우 차수와 해당 정점 세트가 모두 반환됩니다.

으아아아

출력

으아아아

결론

이 기사에서는 차트에서 가장 큰 자유 집합을 찾는 데 사용되는 C 언어로 구현된 Java 프로그램을 소개합니다. 사용된 방법은 무차별 대입 방식입니다. 무차별 대입 방법은 가능한 모든 정점 부분 집합을 생성하고 각 부분 집합이 자유 집합을 형성하는지 확인하는 방식으로 구성됩니다. 알고리즘과 그 구현이 예제 코드 및 출력 결과와 함께 설명됩니다. 이러한 방법은 그래프에서 가장 큰 자유 집합을 찾는 문제를 해결하기 위한 다양한 전략을 제공합니다.

위 내용은 상보 그래프를 사용하여 그래프에서 최대 독립 집합을 찾는 Java 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제