>백엔드 개발 >C++ >주어진 조건에 따라 비순환 그래프를 형성하는 정수의 모든 순열을 계산합니다.

주어진 조건에 따라 비순환 그래프를 형성하는 정수의 모든 순열을 계산합니다.

WBOY
WBOY앞으로
2023-09-07 11:37:02917검색

주어진 조건에 따라 비순환 그래프를 형성하는 정수의 모든 순열을 계산합니다.

정수 N 내에서 단계를 계산하려면 비순환 그래프를 형성하려면 가능한 모든 변화를 조사하고 주어진 조건에 따라 비순환 그래프를 형성하는지 확인해야 합니다. 이러한 조건은 변화에 의해 형성된 조정 그래프의 구조와 관련이 있을 수 있으며, 여기서 주기가 없다는 것은 비순환성을 나타냅니다. 이 문제는 그래프 이론의 개념과 관련이 있으며 깊이 우선 탐색이나 동적 프로그래밍으로 풀 수 있습니다. 깊이 우선 검색은 각 단계를 재귀적으로 조사하여 작동하며 동적 프로그래밍은 중간 결과를 저장하여 루프를 최적화합니다. 마지막에 계산되는 유효 단계의 수는 정수 N 내에서 미리 정해진 조건을 만족하는 비순환 그래프로 정리할 수 있는 방법의 수를 나타냅니다.

사용방법

  • 깊이 우선 검색(DFS)

  • 동적 프로그래밍

깊이 우선 검색(DFS)

주어진 연산으로 그룹화를 생성하는 DFS 방식에서는 주어진 숫자부터 시작하여 값 1에 도달할 때까지 다시 계산합니다. 다음과 같이 진행합니다. 숫자가 실제로 2이면 2로 나누고, 홀수이면 3을 곱하고 1을 더합니다. 사용되지 않은 결과를 반영하도록 숫자를 업데이트하고 이를 계열에 추가합니다. 이 과정은 숫자가 1이 될 때까지 계속됩니다. 결과 시퀀스는 지정된 시작 번호에 대한 반복 Collatz 시퀀스를 나타냅니다. 이 접근 방식을 사용하면 반복 계산을 통해 숫자가 변경됨에 따라 숫자의 진행 상황을 추적하고 패턴을 드러내며 Collatz 시퀀스의 동작을 고려할 수 있습니다. 이는 시퀀스를 생성하고 이 수학적 경이로움의 매혹적인 특징을 분석하는 간단하고 재현 가능한 방법을 제공합니다.

알고리즘

  • 여행을 시작하려면 시작 허브를 선택하세요

  • 센터를 방문으로 표시하여 어떤 센터가 적극적으로 조사했는지 모니터링하세요.

  • 진행 중인 중앙 노드(있는 경우)의 방문하지 않은 이웃을 방문하세요. 진행 중인 중앙 노드의 이웃을 결정하려면 그래프에 대한 감염성 설명(예: 근접 목록 또는 근접 프레임워크)을 알아야 합니다.

  • 방문하지 않은 이웃이 있다고 가정하고 그 중 하나를 선택하고 해당 이웃의 2단계에서 4단계를 다시 해시합니다(재귀적으로).

  • 미방문한 이웃이 없다고 가정하고, 과거 센터로 돌아가서(가능한 경우) 그 지점부터 조사를 계속합니다. 이 단계는 그래프의 모든 잠재적 경로를 탐색하는 데 중요합니다.

  • 그래프의 모든 중앙 노드를 방문할 때까지 2~5단계를 다시 해싱합니다. 그래프가 연결되지 않은 경우(여러 부분 포함) 방문하지 않은 중앙 노드에서 시작하여 깊이 우선 검색(DFS)을 수행해야 할 수도 있습니다.

Example

의 중국어 번역은

Example

입니다. 으아악

출력

으아악

동적 프로그래밍

이 접근 방식에서는 동적 프로그래밍을 활용하여 N에 도달하기 위한 비순환 단계 수를 효율적으로 계산할 수 있습니다. DP 테이블을 정의하겠습니다. 여기서 dp[i]는 숫자 I로 끝나는 비순환 전환 수를 나타냅니다.

알고리즘

  • 문제를 조사하고 더 작은 하위 문제로 나눌 수 있는지 결정하세요. 동일한 하위 문제를 여러 번 해결하는 것이 비효율적이라면 동적 프로그래밍은 하위 문제에 대한 솔루션을 기억하여 솔루션을 개선할 수 있습니다.

  • 더 큰 문제의 배열을 하위 문제의 배열로 표현하세요. 이 중복 연결은 DP를 사용하여 문제를 해결하는 열쇠입니다.

  • 반복되는 연결을 고려하여 하위 질문에 대한 답변을 저장할 수 있는 테이블이나 디스플레이를 만드세요. 이렇게 하면 이중 계산을 방지할 수 있습니다.

  • 보통 상향식 접근 방식으로 가장 작은 하위 문제부터 시작하여 양식을 작성하거나 메모를 사용하여 재귀 프로세스에서 솔루션을 저장하고 검색합니다.

  • 모든 하위 문제가 해결되면 DP 테이블이나 메모된 디스플레이에서 최종 배열을 분리하세요.

Example

의 중국어 번역은

Example

입니다. 으아악

출력

으아악

결론

비순환 그래프가 형성될 수 있는 방식을 계산하는 단계에는 주어진 조건을 충족하는지 확인하기 위해 다양한 정수 배열을 연구하는 작업이 포함됩니다. DFS는 반복적으로 단계를 탐색하는 반면 DP는 메모를 통해 루프를 개선합니다. 이 두 가지 방법은 이 문제를 해결하는 중요한 방법을 제공합니다. 방법 선택은 제약 조건과 N의 크기에 따라 달라집니다. 이러한 방법을 통해 우리는 법적 단계의 수를 효율적으로 찾을 수 있으며, 숫자가 미리 정해진 조건에 따라 비순환 그래프를 형성할 수 있는 방식을 이해하는 데 도움이 됩니다.

위 내용은 주어진 조건에 따라 비순환 그래프를 형성하는 정수의 모든 순열을 계산합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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