분류 전체보기 1090

[재귀호출 1] 무한 호출 막기

/ ▷ 재귀호출 필요한 함수가 자신과 같은 경우, 자기 자신을 다시 호출하는 것을 말한다. 일반 함수를 여러번 작성하는 것보다, 코드를 간결하게 작성할 수 있다. ex) factorial 재귀호출을 사용할 때 주의해야할 점이 있는데, 바로 무한루프가 발생할 수 있다는 것이다. 그 과정은 아래와 같다. # 자기 자신을 호출 # 문제 (무한루프) def abc(): abc() abc() 이러한 재귀함수를 잘 사용하기 위해서는, 먼저 종료조건을 잘 설정하여 무한루프를 막는 것이 필요하다 아래에서는 재귀함수를 돌 때마다 level의 값을 1 증가시켰고, level 이 2가 되었을 때, 함수를 종료시키도록 하였다. # 무한루프 막기 def abc(level): if level == 2: return print(l..

[방향 배열 (Direction Array)] 배열 안에서 상,하, 좌,우로 이동하기

시작점으로부터 위, 아래, 좌, 우 방향으로 이동하는 것을 나타낼 때 사용함 뿐만 아니라 상하좌우로 2배, 3배씩 이동하거나 대각선의 방향으로 이동하는 문제 등 다양한 방식으로 응용할 수 있다. 그래프 탐색 BFS 중 Flood Fill (벚꽃 bloom 문제, Virus 문제)에 핵심적으로 사용된다. ▷ 유투브 개념설명 더보기 https://www.youtube.com/watch?v=n76eL8UTWy4

[DAT (Direct Address Table)] O(n)의 속도로 정렬하기

▷ DAT 자료구조 배열의 값을 다른 배열의 인덱스로 활용하는 자료구조 입력된 범위가 좁을 때, 빠른 검색을 위해서 사용한다. - 장점 빠른 검색이 가능하다 O(n)의 속도로 정렬이 가능하다 - 단점 입력된 범위가 넓을 때, 메모리를 비효율적으로 활용할 수 있다. 안에 음수나 실수는 받기가 힘들다. (이것을 극복한 것이 Hash Function이다) https://www.youtube.com/watch?v=z5DgxQSHOgk ▷ 영어, 일본어 설명 더보기 https://www.youtube.com/watch?v=Juyv4YYvFgo https://www.youtube.com/watch?v=Y9eml9ieItc

Inverse Design

▶ Inverse Design 기존의 design 프로세스와는 반대로, 원하는 결과를 얻기 위해 설계 변수를 찾는 것 일반적으로 최적화 기술과 관련이 있다. 주어진 조건 아래에서 최적의 설계 변수를 찾기 위해 반복적인 과정을 수행하는 것. 예를 들어서, 특정한 밴드 갭을 가진 원소를 찾고 싶다고 가정해보자. 원래는 (어떤 원소 -> 특징 -> 특정한 밴드갭)을 가지고 있다. 이 순서대로 진행이 되어야 할 것이다. 하지만, 이것을 반대로 해서 (특정한 밴드갭 -> 특징 -> 어떤 원소) 그 어떤 원소를 찾는 과정인 것이다. 그런데, 이렇게 찾은 어떤 원소라는 것이 실제로 존재하는 물질일 수도 아닐 수도 있다. 그래서 컴퓨터 시뮬레이션을 통해서 특정 조건을 만족시키는 원소를 찾은 후에는, 그 원소가 실존하는..

GAN (Generative Adversarial Networks)

▶ GAN (Generative Adversarial Networks) 적대적 생성 신경망 2014년에 이안 구펠로우가 발표한 신경망 구조 2개의 신경망인 생성자(Generator)와 판별자(Discriminator)로 구성되어 있다. 생성자(Generator) 판별자(Discriminator) 입력 데이터를 받아 실제 데이터와 비슷한 새로운 데이터를 생성한다. 무작위적으로 주어진 노이즈를 이용하여, 실제 데이터와 비슷한 가짜 데이터를 생성하는 것이 목표이다. 생성자가 생성한 가짜 데이터와 실제 데이터를 구별하는 역할을 한다. 이진 분류기로서 입력된 데이터가 실제인지(Class1) 가짜로 생성된 데이터인지 (Class 0)를 판별한다. 생성자는 학습 초기에 실제 데이터와 비슷한 데이터를 만드는데 실패할 ..

VAE (Variational Auto-Encoder)

▶ VAE (Variational Autoendoer) 생성 모델 중 하나 주어진 데이터의 분포를 학습하고, 이를 기반으로 새로운 데이터를 생성하는데 사용된다. 주어진 데이터를 저차원의 잠재 공간(latent space)로 인코딩한다. 그 후 다시 디코딩하는 과정을 통해, 원래 데이터로 재구성한다. VAE는 일반적인 Autoencoder와 달리, 데이터의 분포를 고려하여 잠재 공간을 학습한다는 점에서 차이가 있다. ▷ VAE의 목적 1. 데이터의 차원 축소 큰 차원의 데이터를 작은 차원의 잠재 공간으로 인코딩하여 표현함으로써, 데이터의 차원을 줄인다. 이렇게 하면 계산이 조금 더 간소화되고 고차원 데이터의 특징을 더욱 잘 파악할 수 있다. 2. 원래 데이터 보존 잠재 공간으로 인코딩 된 데이터를 디코딩하..

DFT Modeling

▶ DFT Modeling Discrete Fourier Transform(이산 푸리에 변환)을 사용하여, 시간 영역의 이산 시퀀스를 주파수 영역으로 바꾸는 과정. DFT는 신호 처리, 통신, 이미지 처리 등에서 사용된다. ▷ DFT(이산 푸리에 변환)의 주요 개념과 과정 1. 개념 이산 시간 신호를 주파수 도메인으로 변환하는 과정 주어진 이산 시간 신호의 길이가 N이라면, DFT는 주파수 영역에서 N개의 복소수 값을 생성함 * 복소수 : 여기서는 크기와 위상을 가지는 수를 의미 2. 공식 x[n] : 주어진 이산 시간 신호 X[k] : 해당 신호의 DFT 결과 : 각 주파수의 성분 k : 주파수의 인덱스 n : 시간 인덱스 3. 주파수의 해석 DFT의 결과로 얻어지는 주파수 영역의 값들은, 주파수를 기..

Pymatgen (Python Materials Genomics)

▶ Pymatgen (Python Materials Genomics) 파이썬 라이브러리 중 하나. 고체 상태 물질의 구조와 속성을 모델링하고 분석하기 위해 사용된다. ▷ 주요기능 구조 분석 고체 상태 물질 구조를 읽고 작성하는 기능을 제공합니다. 파일 형식(POSCAR, CIF, VASP의 출력 파일 등)의 구조를 처리하고, 분자 구조를 다루는 데 유용하다 결정학적 속성 계산 구조를 기반으로 결정학적 속성을 계산할 수 있다. 격자 상수, 첨자, 결정학적 안정성, 밀도 등 전자 구조 계산 전자 구조 계산 도구를 사용하여 밴드 구조, 전자 밀도, 밴드 갭 등 다양한 전자 구조 속성을 계산할 수 있다 화학적 속성 계산 화학적 속성을 계산하는 도구를 사용하여 고체 상태 물질의 화학적 특성을 평가할 수 있다. 분..