일반적인 문제 알고리즘의 실행 시간 효율성을 측정하는 방법은 무엇입니까?

알고리즘의 실행 시간 효율성을 측정하는 방법은 무엇입니까?

Jul 26, 2019 am 11:04 AM

알고리즘의 실행 시간 효율성을 측정하는 방법은 무엇입니까?

기계 성능을 무시한다는 원칙하에 알고리즘의 실행 시간을 측정하기 위해 알고리즘 시간 복잡도를 사용합니다.
1. 시간 빈도
알고리즘을 실행하는 데 걸리는 시간은 이론적으로 계산할 수 없습니다. 컴퓨터에서 테스트를 실행해야만 알 수 있습니다. 그러나 모든 알고리즘을 컴퓨터에서 테스트하는 것은 불가능하고 불필요합니다. 어떤 알고리즘이 더 많은 시간이 걸리고 어떤 알고리즘이 더 적은 시간이 걸리는지만 알면 됩니다. 그리고 알고리즘에 걸리는 시간은 알고리즘의 명령문 실행 횟수에 비례합니다. 더 많은 명령문이 실행되는 알고리즘은 더 많은 시간이 걸립니다. 알고리즘의 명령문 실행 횟수를 명령문 빈도 또는 시간 빈도라고 합니다. 이를 T(n)으로 표시합니다.
2. 시간 복잡도
방금 언급한 시간 주파수에서 n을 문제의 규모라고 합니다. n이 계속 변하면 시간 주파수 T(n)도 계속 변합니다. 하지만 때로는 변화할 때 어떤 패턴이 나타나는지 알고 싶을 때가 있습니다. 이를 위해 시간복잡도라는 개념을 소개한다.

일반적으로 알고리즘의 기본 연산이 반복되는 횟수는 문제 크기 n의 함수이며, 특정 보조 함수 f(n)이 있는 경우 n이 무한대에 가까워지면 T(n)/f(n)의 극한값은 0이 아닌 상수인 경우 f(n)은 T(n)과 동일한 크기 차수의 함수라고 합니다. T(n)=O(f(n))으로 표시되는 O(f(n))은 알고리즘의 점근적 시간 복잡도, 줄여서 시간 복잡도라고 합니다.

다양한 알고리즘에서 알고리즘의 명령문 실행 횟수가 일정할 경우 시간 복잡도는 O(1)입니다. 또한 시간 빈도가 다른 경우 시간 복잡도는 T( n )=n^2+3n+4 및 T(n)=4n^2+2n+1 은 서로 다른 주파수를 갖지만 시간 복잡도는 동일하며 둘 다 O(n^2)입니다.
크기가 오름차순으로 정렬된 일반적인 시간 복잡도는 다음과 같습니다.
상수 차수 O(1), 로그 차수 O(log2n)(밑이 2인 n의 로그, 아래와 같음), 선형 차수 O(n),
선형 로그 차수 O(nlog2n), 제곱차 O(n^2), 3차 차수 O(n^3),...,
k차수 O(n^k), 지수 차수 O(2^n). 문제 크기 n이 계속 증가함에 따라 위의 시간 복잡도는 계속 증가하고 알고리즘의 실행 효율성은 낮아지게 됩니다.
알고리즘의 시간 성능 분석
(1) 알고리즘이 소비한 시간 및 명령문 빈도

알고리즘이 소비한 시간 = 알고리즘 내 각 명령문의 실행 시간의 합

각 명령문의 실행 시간 = 명령문의 실행 횟수 명령문(즉, 빈도수) × 명령문을 한 번 실행하는 데 필요한 시간 알고리즘이 프로그램으로 변환된 후 각 명령문을 한 번 실행하는 데 필요한 시간은 기계의 명령 성능, 속도 및 생성된 코드의 품질에 따라 다릅니다. 요인을 결정하는 것은 어렵습니다.

기계의 소프트웨어 및 하드웨어 시스템과 독립적으로 알고리즘의 시간 소비를 분석하려면 각 명령문을 한 번 실행하는 데 필요한 시간을 단위 시간으로 가정하고, 알고리즘의 시간 소비는 알고리즘의 모든 명령문의 빈도라고 가정합니다. 그리고.
두 n차 제곱 행렬의 곱 C=A×B를 구하는 알고리즘은 다음과 같습니다.


  # define n 100 // n 可根据需要定义,这里假定为100
  void MatrixMultiply(int A[a],int B [n][n],int C[n][n])
  { //右边列为各语句的频度
  int i ,j ,k;
   for(i=0; i<n;j++) n+1
   for (j=0;j<n;j++) { n(n+1)
   C[i][j]=0; n
   for (k=0; k<n; k++) nn(n+1)
   C[i][j]=C[i][j]+A[i][k]*B[k][j];n
  }
  }
로그인 후 복사

이 알고리즘에 포함된 모든 문의 빈도의 합(즉, 알고리즘의 시간 소모) )은 다음과 같습니다.

T(n) =nn(n+1) (1.1)

분석: 명령문 (1)의 루프 제어 변수 i는 n으로 증가해야 하며 i=n이 될 때까지 테스트는 종료되지 않습니다. 확립된. 따라서 주파수는 n+1입니다. 그러나 루프 본문은 n번만 실행될 수 있습니다. 명령문 (2)는 명령문 (1)의 루프 본문에 있는 명령문으로서 n 번 실행되어야 하지만 명령문 (2) 자체는 n+1 번 실행되어야 하므로 명령문 (2)의 빈도는 n( n+1). 같은 방식으로 문장 (3), (4), (5)의 빈도는 각각 n, nn(n+1), n입니다.

MatrixMultiply 알고리즘의 시간 소모 T(n)은 행렬 차수 n3의 함수입니다.

(2) 문제 규모와 알고리즘 시간 복잡도
문제를 해결하기 위한 알고리즘의 입력량을 문제의 크기(Size)라고 하며 일반적으로 정수로 표시합니다.

매트릭스 제품 문제의 규모는 매트릭스의 순서입니다.

그래프 이론 문제의 크기는 그래프의 꼭지점 또는 모서리의 수입니다.

알고리즘의 시간 복잡도(Time Complexity, 시간 복잡도라고도 함) T(n)는 알고리즘의 시간 소비이며 알고리즘으로 해결되는 문제의 크기 n에 대한 함수입니다. 문제 n의 크기가 무한대에 접근할 때 시간 복잡도 T(n)의 크기(차수) 차수를 알고리즘의 점근적 시간 복잡도라고 합니다.

MatrixMultidy 알고리즘의 시간 복잡도 T(n)은 방정식 (1.1)에 나와 있습니다. n이 무한대인 경우 T(n)~O(n3)이 분명합니다.

이는 n이 클 때를 보여줍니다. 충분, T n3에 대한 (n)의 비율은 0이 아닌 상수입니다. 즉, T(n)과 n3은 동일한 차수이거나 T(n)과 n3의 크기는 동일합니다. T(n)=O(n3)으로 표시되는 것은 MatrixMultiply 알고리즘의 점근적 시간 복잡도입니다.

(3) 점근적 시간 복잡도는 알고리즘의 시간 성능을 평가합니다.

알고리즘의 시간 성능을 평가하기 위해 주로 알고리즘의 시간 복잡도(즉, 알고리즘의 점근적 시간 복잡도)의 크기 차수를 사용합니다.
MatrixMultiply 알고리즘의 시간 복잡도는 일반적으로 T(n)=O(n3)이고, f(n)=n3은 알고리즘에서 문장 (5)의 빈도입니다. 다음으로, 알고리즘의 시간 복잡도를 찾는 방법을 설명하는 예를 제공하겠습니다.

i와 j의 내용을 교환합니다.


Temp=i;
i=j;
j=temp;
로그인 후 복사



  以上三条单个语句的频度均为1,该程序段的执行时间是一个与问题规模n无关的常数。算法的时间复杂度为常数阶,记作T(n)=O(1)。  
注意:如果算法的执行时间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。
变量计数之一:

   x=0;y=0;
   for(k-1;k<=n;k++)
   x++;
   for(i=1;i<=n;i++)
   for(j=1;j<=n;j++)
   y++;
로그인 후 복사


一般情况下,对步进循环语句只需考虑循环体中语句的执行次数,忽略该语句中步长加1、终值判别、控制转移等成分。因此,以上程序段中频度最大的语句是(6),其频度为f(n)=n2,所以该程序段的时间复杂度为T(n)=O(n2)。

当有若干个循环语句时,算法的时间复杂度是由嵌套层数最多的循环语句中最内层语句的频度f(n)决定的。

变量计数之二:

x=1;
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
for(k=1;k<=j;k++)
x++;
로그인 후 복사

该程序段中频度最大的语句是(5),内循环的执行次数虽然与问题规模n没有直接关系,但是却与外层循环的变量取值有关,而最外层循环的次数直接与n有关,因此可以从内层循环向外层分析语句(5)的执行次数:

则该程序段的时间复杂度为T(n)=O(n3/6+低次项)=O(n3)。

(4)算法的时间复杂度不仅仅依赖于问题的规模,还与输入实例的初始状态有关。

在数值A[0..n-1]中查找给定值K的算法大致如下:

i=n-1;
while(i>=0&&(A[i]!=k))
 i--;
return i;
로그인 후 복사



此算法中的语句(3)的频度不仅与问题规模n有关,还与输入实例中A的各元素取值及K的取值有关:

①若A中没有与K相等的元素,则语句(3)的频度f(n)=n;

②若A的最后一个元素等于K,则语句(3)的频度f(n)是常数0。

위 내용은 알고리즘의 실행 시간 효율성을 측정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
<exp exp> 모호한 : 원정 33- 완벽한 크로마 촉매를 얻는 방법
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

CLIP-BEVFormer: BEVFormer 구조를 명시적으로 감독하여 롱테일 감지 성능을 향상시킵니다. CLIP-BEVFormer: BEVFormer 구조를 명시적으로 감독하여 롱테일 감지 성능을 향상시킵니다. Mar 26, 2024 pm 12:41 PM

위에 작성 및 저자의 개인적인 이해: 현재 전체 자율주행 시스템에서 인식 모듈은 중요한 역할을 합니다. 자율주행 시스템의 제어 모듈은 적시에 올바른 판단과 행동 결정을 내립니다. 현재 자율주행 기능을 갖춘 자동차에는 일반적으로 서라운드 뷰 카메라 센서, 라이더 센서, 밀리미터파 레이더 센서 등 다양한 데이터 정보 센서가 장착되어 다양한 방식으로 정보를 수집하여 정확한 인식 작업을 수행합니다. 순수 비전을 기반으로 한 BEV 인식 알고리즘은 하드웨어 비용이 저렴하고 배포가 용이하며, 출력 결과를 다양한 다운스트림 작업에 쉽게 적용할 수 있어 업계에서 선호됩니다.

C++에서 기계 학습 알고리즘 구현: 일반적인 과제 및 솔루션 C++에서 기계 학습 알고리즘 구현: 일반적인 과제 및 솔루션 Jun 03, 2024 pm 01:25 PM

C++의 기계 학습 알고리즘이 직면하는 일반적인 과제에는 메모리 관리, 멀티스레딩, 성능 최적화 및 유지 관리 가능성이 포함됩니다. 솔루션에는 스마트 포인터, 최신 스레딩 라이브러리, SIMD 지침 및 타사 라이브러리 사용은 물론 코딩 스타일 지침 준수 및 자동화 도구 사용이 포함됩니다. 실제 사례에서는 Eigen 라이브러리를 사용하여 선형 회귀 알고리즘을 구현하고 메모리를 효과적으로 관리하며 고성능 행렬 연산을 사용하는 방법을 보여줍니다.

C++sort 함수의 기본 원리와 알고리즘 선택을 살펴보세요. C++sort 함수의 기본 원리와 알고리즘 선택을 살펴보세요. Apr 02, 2024 pm 05:36 PM

C++정렬 함수의 맨 아래 계층은 병합 정렬을 사용하고 복잡도는 O(nlogn)이며 빠른 정렬, 힙 정렬 및 안정 정렬을 포함한 다양한 정렬 알고리즘 선택을 제공합니다.

인공지능이 범죄를 예측할 수 있을까? CrimeGPT의 기능 살펴보기 인공지능이 범죄를 예측할 수 있을까? CrimeGPT의 기능 살펴보기 Mar 22, 2024 pm 10:10 PM

인공지능(AI)과 법 집행의 융합은 범죄 예방 및 탐지의 새로운 가능성을 열어줍니다. 인공지능의 예측 기능은 범죄 행위를 예측하기 위해 CrimeGPT(범죄 예측 기술)와 같은 시스템에서 널리 사용됩니다. 이 기사에서는 범죄 예측에서 인공 지능의 잠재력, 현재 응용 프로그램, 직면한 과제 및 기술의 가능한 윤리적 영향을 탐구합니다. 인공 지능 및 범죄 예측: 기본 CrimeGPT는 기계 학습 알고리즘을 사용하여 대규모 데이터 세트를 분석하고 범죄가 발생할 가능성이 있는 장소와 시기를 예측할 수 있는 패턴을 식별합니다. 이러한 데이터 세트에는 과거 범죄 통계, 인구 통계 정보, 경제 지표, 날씨 패턴 등이 포함됩니다. 인간 분석가가 놓칠 수 있는 추세를 식별함으로써 인공 지능은 법 집행 기관에 권한을 부여할 수 있습니다.

탐지 알고리즘 개선: 고해상도 광학 원격탐사 이미지에서 표적 탐지용 탐지 알고리즘 개선: 고해상도 광학 원격탐사 이미지에서 표적 탐지용 Jun 06, 2024 pm 12:33 PM

01 전망 요약 현재로서는 탐지 효율성과 탐지 결과 간의 적절한 균형을 이루기가 어렵습니다. 우리는 광학 원격 탐사 이미지에서 표적 감지 네트워크의 효과를 향상시키기 위해 다층 특징 피라미드, 다중 감지 헤드 전략 및 하이브리드 주의 모듈을 사용하여 고해상도 광학 원격 감지 이미지에서 표적 감지를 위한 향상된 YOLOv5 알고리즘을 개발했습니다. SIMD 데이터 세트에 따르면 새로운 알고리즘의 mAP는 YOLOv5보다 2.2%, YOLOX보다 8.48% 우수하여 탐지 결과와 속도 간의 균형이 더 잘 이루어졌습니다. 02 배경 및 동기 원격탐사 기술의 급속한 발전으로 항공기, 자동차, 건물 등 지구 표면의 많은 물체를 묘사하기 위해 고해상도 광학 원격탐사 영상이 활용되고 있다. 원격탐사 이미지 해석에서 물체 감지

Jiuzhang Yunji DataCanvas 다중 모드 대형 모델 플랫폼에 대한 실습 및 고찰 Jiuzhang Yunji DataCanvas 다중 모드 대형 모델 플랫폼에 대한 실습 및 고찰 Oct 20, 2023 am 08:45 AM

1. 멀티모달 대형 모델의 역사적 발전 위 사진은 1956년 미국 다트머스 대학에서 열린 최초의 인공지능 워크숍이다. 이 컨퍼런스도 인공지능 개발의 시발점이 된 것으로 평가된다. 상징 논리학의 선구자들(앞줄 중앙에 있는 신경생물학자 피터 밀너를 제외하고). 그러나 이 기호논리 이론은 오랫동안 실현되지 못했고, 1980년대와 1990년대에는 최초의 AI 겨울 시기를 맞이하기도 했습니다. 신경망이 실제로 이러한 논리적 사고를 담고 있다는 사실을 발견한 것은 최근 대규모 언어 모델이 구현된 이후였습니다. 신경생물학자인 Peter Milner의 연구는 인공 신경망의 후속 개발에 영감을 주었으며, 이러한 이유로 그가 참여하도록 초대되었습니다. 이 프로젝트에서.

58 초상화 플랫폼 구축에 알고리즘 적용 58 초상화 플랫폼 구축에 알고리즘 적용 May 09, 2024 am 09:01 AM

1. 58초상화 플랫폼 구축 배경 먼저, 58초상화 플랫폼 구축 배경에 대해 말씀드리겠습니다. 1. 기존 프로파일링 플랫폼의 전통적인 사고로는 더 이상 충분하지 않습니다. 사용자 프로파일링 플랫폼을 구축하려면 여러 비즈니스 라인의 데이터를 통합하여 정확한 사용자 초상화를 구축하는 데이터 웨어하우스 모델링 기능이 필요합니다. 그리고 알고리즘 측면의 기능을 제공해야 하며, 마지막으로 사용자 프로필 데이터를 효율적으로 저장, 쿼리 및 공유하고 프로필 서비스를 제공할 수 있는 데이터 플랫폼 기능도 있어야 합니다. 자체 구축한 비즈니스 프로파일링 플랫폼과 중간 사무실 프로파일링 플랫폼의 주요 차이점은 자체 구축한 프로파일링 플랫폼이 단일 비즈니스 라인에 서비스를 제공하고 필요에 따라 사용자 정의할 수 있다는 것입니다. 모델링하고 보다 일반적인 기능을 제공합니다. 2.58 Zhongtai 초상화 구성 배경의 사용자 초상화

실시간으로 SOTA를 추가하고 급상승하세요! FastOcc: 더 빠른 추론 및 배포 친화적인 Occ 알고리즘이 출시되었습니다! 실시간으로 SOTA를 추가하고 급상승하세요! FastOcc: 더 빠른 추론 및 배포 친화적인 Occ 알고리즘이 출시되었습니다! Mar 14, 2024 pm 11:50 PM

위에 쓴 글 & 저자의 개인적인 이해는 자율주행 시스템에서 인지 작업은 전체 자율주행 시스템의 중요한 구성 요소라는 것입니다. 인지 작업의 주요 목표는 자율주행차가 도로를 주행하는 차량, 길가의 보행자, 주행 중 직면하는 장애물, 도로 위의 교통 표지판 등 주변 환경 요소를 이해하고 인지하여 하류에 도움을 주는 것입니다. 모듈 정확하고 합리적인 결정과 행동을 취하십시오. 자율주행 기능을 갖춘 차량에는 일반적으로 자율주행 차량이 정확하게 인식하고 인식할 수 있도록 서라운드 뷰 카메라 센서, 라이더 센서, 밀리미터파 레이더 센서 등과 같은 다양한 유형의 정보 수집 센서가 장착됩니다. 주변 환경 요소를 이해하여 자율 주행 중에 자율 차량이 올바른 결정을 내릴 수 있도록 합니다. 머리