파이썬
-
파이썬 정렬 알고리즘 big-O 시간 복잡도 계산하기컴퓨터/파이썬 2020. 8. 28. 19:08
big-O Caculator v0.0.9.8.3 big-O-calculator A calculator to predict big-O of sorting functions pypi.org 1. 소개 C++ 버전에서 아이디어를 얻어 파이썬으로 모듈화 시키고 pypi에 업로드해보았다. 시간 복잡도를 계산해보는 식은 일반적으로 $T = C * f(n)$, where T = 입력 크기 n의 예측 런타임 , C = 계수 (coeffiecient). 10, 100, 1000, 10,000, 100,000, 총 5번, 5개의 크기만큼 테스트를 돌린다. 자세한 사항은 다음 사이트 참고: github.com/ismaelJimenez/cpp.leastsq 2. 설치 pip install big-O-calculator ※ 배..
-
Python Microsoft Playwright컴퓨터/파이썬 2020. 8. 16. 17:05
Playwright microsoft/playwright-python Python version of the Playwright testing and automation library - microsoft/playwright-python github.com 소개 : playwright는 원래 JS 버전만 있었는데, python버전도 출시가 되었다. playwright는 chromium, firefox, webkit 오토메이션 툴이다. (macro) (주로 cross-browser 테스트로 많이 쓰이는 듯) 특징 기능 : action 실행 전 element auto-wait (ex. 지정한 HTML 요소가 나오면 클릭) 네트워크 요청받기 / 보내기 모바일 디바이스, 권한, 위치 에뮬레이션 shadow-pi..
-
파이썬 정렬 알고리즘 모음 + 속도 테스트컴퓨터/파이썬 2020. 8. 10. 16:34
15개 정렬 알고리즘 소개 0. 정렬 알고리즘 속도 테스트 코드 big-O-calculator 이용 @설치 링크 import bisect import heapq import inspect from random import randint, shuffle from statistics import mean from timeit import default_timer, repeat import matplotlib.pyplot as plt from bigO import BigO from win10toast import ToastNotifier # timeit.repeat 이용 def runAlgorithm(algorithm, array, timeResults): setup_code = f"from __main__ ..
-
파이썬 OpenCV 이미지 차이 구하기컴퓨터/파이썬 2020. 8. 6. 17:49
OpenCV OpenCV About the author:Pau Rodríguez is a research scientist at Element AI, Montreal. He earned his Ph.D. opencv.org 할 것 이미지 차이를 구해서 빨간색으로 칠하기 1. OpenCV 설치 pip install opencv-python 2. 이미지 설정 imageA = 원본, imageB = 비교 대상, imageC = 원본 복사 grayA = imageA를 gray scale, grayB = imageB를 gray scale cvtColor 문서 import cv2 from skimage.measure import compare_ssim imageA = cv2.imread("D:\DEV\Code\Py..
-
파이썬 A* (A-star) 최단 경로 찾기 알고리즘컴퓨터/파이썬 2020. 7. 20. 16:02
A* 길 찾기 알고리즘은 1968년에 Peter Hart, Nils Nilsson, Bertram Raphael에 의해 최초 공개됐다.우선 Node 클래스는 아래와 같이 구현될 것이며, 아래 클래스를 보고 글을 읽으면 좀 더 편할 것이다.class Node: def __init__(self, parent=None, position=None): self.parent = parent # 이전 노드 self.position = position # 현재 위치 self.f = 0 self.g = 0 self.h = 0ex) 노드의 현재 위치는 xy좌표계를 사용한다.start = (0, 0), end = (9,9)aSta..
-
파이썬 Introspective Sort (내성 정렬) 알고리즘컴퓨터/파이썬 2020. 7. 17. 15:31
Introspective Sort IntroSort (Introspective Sort) 인트로 정렬은, Quick Sort의 장점을 유지하면서, 최악 시나리오 O(n^2)를 해결하려 만들어진 (Quick Sort + Heap Sort + Insertion Sort) 하이브리드 알고리즘이다. (C++ 기본 정렬 알고리즘, std::sort) 모든 상황에서 시간 복잡도 : O(nlogn), 공간 복잡도는 O(logn)이며, inplace, not stable한 알고리즘이다. (in-place란, 보조 데이터 구조를 사용하지 않고, 작동하는 알고리즘) Quick Sort로 시작해서, Recursion max-depth (log(len(array)) 에 도달하면 Heap Sort로 정렬하고, 그리고, 파티션 ..
-
파이썬 array.sort(), TimSort 알고리즘컴퓨터/파이썬 2020. 7. 16. 21:34
Tim Sort 소개 (Insert + Merge) TimSort 는 파이썬, 자바, Swift, Rust stable에서 기본으로 탑재된 sort() 함수의 알고리즘이다. 최고 O(n) 시간 복잡도를 갖고, stable 하며, 다양한 데이터에 적합한 정렬 알고리즘이다. (시간 복잡도 : 최상(n), 평균(nlogn), 최악(nlogn), 공간 복잡도 : n) (이 글에서 구현된 timSort는 계산해보면 모든 케이스에서 nlogn이 나온다) (정렬 알고리즘에서 안정성(stability)란 값이 원래 순서(order)를 갖고 정렬을 할 수 있냐, 없냐이다.) TimSort 는 두 가지 정렬 알고리즘을 섞은 것인데, 바로 Insertion과 Merge이다. (Quick Sort는 unstable, Merg..
-
Python Count Sort 카운트 정렬 알고리즘컴퓨터/파이썬 2020. 6. 28. 21:47
Count Sort 말 그대로 통 안에 모든 값들을 넣어 카운트(+1) 한 다음에, bucket[최소 값 ~ 최대 값], 카운트된 만큼 계속 arr[index] 에 지정하는 방식 # Time Complexity : O(n) | Space Complexity : O(n) | stable def countSort(arr): """ Args: arr (list): Array to sort Returns: arr (list): Sorted input array """ minValue = min(arr) maxValue = max(arr) - minValue # 음수 케이스 처리 buckets = [0 for x in range(maxValue + 1)] for i in arr: buckets[i - minVal..