2012-05-23 2 views

답변

1

계산상의 복잡성은 의 해결 방법과 관련이 있습니다. 파이썬 3이 더 빠르거나 없다면, 원칙적으로 다른 알고리즘을 사용하여 문제가 해결되지 않는다면 복잡성은 동일 할 것입니다.

때때로 같은 이름을 가진 추상 데이터 구조가 다를 수 있습니다 (예 : Python 2 문자열 대 Python 3 문자열 또는 Python 2의 int, Python 3의 일반화 된 int).

필자는 그것을 검사하지 않았지만, 제 생각에 파이썬 2와 파이썬 3은이 점에서 다르지 않습니다.

+0

내가 물어야 할 질문은 "사용 된 알고리즘에 차이가 있습니까? 원칙적으로"입니다. 전산 복잡성에 대해 묻기 때문에 "알고리즘 사용"이라는 말은 분명하다고 생각했습니다. 설계 상으로 파이썬 3의 더 많은 메소드는 목록이나 사전 대신 생성자와 반복자를 반환합니다. -> 이렇게하면 메모리 복잡성이 줄어 듭니다. 다른 개선 사례에 대해 궁금합니다. –

+0

글쎄, 파이썬 2에서도 반복자를 사용할 수 있습니다. 유일한 차이점은 명시 적이어야한다는 것입니다. 그렇다면 다른 알고리즘을 비교할 것인지 여부입니다. 반복자는 일부 알고리즘의 메모리 소비를 줄이지만 시간 복잡도는 기본적으로 동일해야합니다. – pepr

+0

나는 어떤 복잡한 차이점에 대해서 알고 싶었습니다. 아마도 당신이 맞습니다. 나는 틀린 질문을 공식화했습니다. –

2

위키 항목은 Python 2와 3 모두 CPython에 적용됩니다. 이러한 클래스는 변경되지 않았습니다. 다른 구현은 다를 수 있지만 사람들이 CPython에서 xpython으로 코드를 이식하기를 원한다면 유사해야합니다. 예를 들어 목록 유형에 대한 링크 된 목록을 사용하는 Python은 상당히 다른 프로그래밍 자극 및 코드 재 배열을 필요로합니다.

3.3에서는 dict 클래스가 변경되어 한 클래스의 여러 인스턴스에 공통된 일부 정보가 중복되지 않고 공유됩니다. 이것은 주로 100s 또는 1000s의 인스턴스를 가진 사람들에게 영향을 주며, 공간 복잡성 클래스를 변경하지 않는 상수 요소 인 dict 공간의 약 1/3을 절약 할 것입니다.

더 중요한 것은 (유니 코드) str 클래스가 필요한만큼 많은 바이트/문자 만 사용하도록 완전히 다시 작성된 것입니다. 결과는 일반적으로 공간과 시간이 줄어들지 만, 주 효과는 O (xxx) 표기법에 의해 무시되는 승수에 있어야합니다.

+0

답변 해 주셔서 감사합니다. –

관련 문제