n-bit Gray codes을 반복하는 여러 가지 방법이 있습니다. 일부는 다른 것보다 효율적입니다. 그러나 실제로 그레이 코드가 필요하지 않으며 그레이 코드 목록에서 변경된 비트 인덱스를 반복하는 대신 실제 그레이 코드를 반복하는 것이 좋습니다. ,그레이 코드 변경 위치를 반복하는 효율적인 방법
는000, 001, 011, 010, 110, 111, 101, 100
내가하려는 출력 3, 2, 3 : 예를 들어, 3 비트의 그레이 코드리스트를 가지고 1, 3, 2, 3. 이것은 우리가 목록을 얻기 위해 비트 3, 2, 3 등을 바꿀 필요가 있음을 말해 준다. 여기에서 1부터 왼쪽부터 색인을 생성합니다.
이 작업을 수행하는 한 가지 방법은 회색 코드를 순서대로 계산하고 각 연속 쌍 (x, y)에 대해 (xxOR y)를 계산하여 변경된 비트를 식별 한 다음 정수 로그베이스 2 (x XOR y).
그러나 가능한 한 빨리 반복해야하며 관심사는 30-40 비트 회색 코드입니다.
효율적인 방법이 있습니까?
왜 코드 생성 자체가 비판적으로 효율적이어야하는지 궁금합니다. 내 이해를 위해, 열거 및 변경 위치 목록 생성 알고리즘 - 복잡도 (큰 - 오 - 표기법의 측면에서)는 열거 자체의 생성보다 크지 않습니다. 성능이 중요한 이유는 무엇입니까? – Codor
@Codor 영구 (https://en.wikipedia.org/wiki/Computing_the_permanent)의 계산 속도를 높이기 위해 사용하고 있습니다. 일정한 요소의 속도 향상은 나에게 큰 도움이 될 것입니다. – eleanora