전체 글 22

3. std::forward_list

std::forward_list 란? 앞에 배열과 벡터의 문제점 중 하나인 데이터 중간에 자료를 추가하거나 삭제하는 과정에서 많은 시간이 발생한다. 이를 해결하고자 forward_list 라는 연결 리스트 컨테이너를 이용하면 시간 복잡도 O(1)에서 해결이 가능하다. 그렇다면 사용법은? 벡터와 쓰임새가 비슷하다. #include #include using namespace std; int main() { forward_list f_list; } 마찬가지로 크기 또한 동적으로 할당이 가능하다. 단점으로는 전체 리스트의 크기 반환 기능, back() 함수의 기능이 제공되지 않으며 과 첫번째 주소에만 직접 접근이 가능하다. 그래서 이 컨테이너를 적절히 이용하기 위해선 삽입과 삭제 또는 리스트 반전, 분할이 필..

자료구조 2022.07.12

2. C++ std::array vs std::vector

std::array vs std::vector 이 둘의 차이점은 무엇일까? 우선 둘은 C++에서 배열을 관리를 해주는 라이브러리이다. 그렇다면 둘 다 배열을 관리를 해주는 것은 같으나 무엇이 달라 나뉜 것일까? std::array 우선 C++에서의 std::array 사용법은 다음과 같다. #include using namespace std; int main() { array arr_1; // 정수형 타입의 크기가 5인 배열선언 array arr_2 = { 1,3,5,7,9 };// 정수형 타입의 크기가 5이고 특정 원소로 초기화된 배열 선언 } box로 선언한 array은 일반적인 배열과 똑같이 접근이 가능하며 추가적으로 begin(), end(), front(), back(), data() 등등 멤버..

자료구조 2022.07.08

1. 연속된 자료 구조(배열) vs 연결된 자료 구조(링크 리스트) (C++)

선형 자료 구조 선형 자료 구조란? 자료를 구성하는 데이터를 순차적으로 나열한 방식이다. 예를 들어 {1 ,a ,2 ,l} 라는 자료들이 있다고 가정하고 이를 연속적으로 1 - a - 2 - l 이렇게 나열하는 표현하는 방식을 선형 하다라고 한다. 대표적인 선형 자료 구조로는 배열,리스트,스택,큐 가 있다. 선형 자료 구조의 종류 크게 연속된 자료 구조와 연결된 자료구조로 나뉜다. 연속된 자료 구조 연속된 자료 구조 연속된 자료구조는 모든 원소를 단일 메모리에 저장을 하며 이를 밑에 다이어그램으로 보여준 것이다. data [0] data [1] data [2] data [2] arr arr + sizeof(type) arr + 2*sizeof(type) arr + 2*sizeof(type) 시작 주소: ..

자료구조 2022.07.05

기계학습 종류

기계학습 종류 1. 연역적 학습: 연역적 추론을 통한 학습 2. 귀납적 학습: 사례들을 일반화하여 패턴 또는 모델을 추출하는 것으로 일반적인 기계학습의 대상으로 쓰이는 학습 방식이며 학습 데이터를 잘 설명할 수 있는 패턴을 찾는 것이 목적이다. 만약에 고를수 있는 패턴이 많은 경우는 오컴의 면도날이라는 원칙을 이용하여 패턴을 찾으면 된다. (오컴의 면도날:가능하면 학습 결과를 간단한 형태로 표현하는 것을 고른다.) 예를들어 학습된 데이터를 가지고 패턴이 2개가 나왔다. 하지만 두번째 패턴은 첫번째 패턴보다 복잡하므로 h(x,y)=x+y의 패턴을 고르면 된다. 3.지도학습:입력(문제)-출력(답)의 데이터들로 부터 새로운 입력에 대한 출력을 결정할 수 있는 패턴 추출 지도학습에는 두가지의 세부학습 방식이 존..

카테고리 없음 2021.10.18

추론과 확신도

추론 전향 추론: 규칙의 조건부와 만족하는 사실이 있을 때 규칙의 결론부를 실행 후향 추론: 어떤 사실을 검증 또는 확인하고 싶을 때 그 대상의 사실을 결론부에 가서 특정 규칙을 찾아 조건부의 조건들이 모두 만족하는지 확인: 확신도 규칙과 사실의 신뢰정도를 [-1, 1] 구간의 값으로 표현한다. 1은 단정적 신뢰, -1은 단정적 불신이다. 이를 가지고 구간의 값을 가지고 세세히 나눌 수 있다. 추론 규칙의 방식을 이용하여 if와 then 즉 조건부와 결론부를 가지고 사실을 유도하고 그 유도한 사실을 가지고 추론 결과의 확신도를 얻는다. 규칙에 대한 추론 결과의 확신도 확신도의 값을 알기위해선 규칙과 사실의 신뢰정보를 가지고 계산을 하면된다. 그림과 같이 규칙x사실을 곱해주면 추론 결과의 값이 나온다. 그..

카테고리 없음 2021.10.17

술어 논리

술어 논리 술어 논리는 명제의 내용을 다루기 위해서 변수, 함수 등을 도입해 이들의 값에 따라 T,F이 결정 되도록 명제 논리를 확장한 논리이다. 여기서 술어는 문장이 있을 때 "주어+서술어" 서술어에 해당하며 대상의 속성이나 대상 간의 관계를 기술하는 기호로 T,F값을 부여하는 명제의 기본형식이다. EX) 술어 논리에는 변수의 범위를 고려한 표현을 쓰는데 첫번째는 존재 한정사(∃) 전칭 한정사(∀) 사용한다. 이 표현법을 활용하면 술어 논리에서 함수는 주어진 인자에 대해서 일반적인 값을 반환을 해주고 그 반환한 값을 술어나 다른 함수의 인자로 사용한다. 술어 논리에서 항은 함수의 인자가 될 수 있는 것이며 항이 될 수 있는 것은 개체상수,변수,함수이다. 술어 논리식에 대한 정형식 여기까지는 명제논리도 ..

인공지능 2021.10.16

논리 추론

논리적 귀결 논리적 귀결은 논리적으로 결론을 짓는다 라는 뜻이다. 이를 보일려면 어떻게 해야할까? 예를들어 위와 같이 이렇게 오메가와 델타사이에 논리적인 귀결이 있다 했을 때 이를 표현하기를 3가지로 귀결관계임을 나타낼 수 있고 이를 표기법으로 나타낸다면 이와 같이 나타낼 수 있다. 이 표기법은 델타가 참이면 오메가도 참이다를 내포하고 있고 예를들면 진리표를 이용하면 델타가 참일땐 P와Q 모두가 True여야 하기에 오메가도 자동으로 참이 된다. 추론(infernce) 1.귀납적 추론: 관측된 여러개의 사실들을 일반화하여 일반적인 패턴또는 명제를 도출하는 추론방식이며 대표적으로 기계학습이 있다. 2.연역적 추론: 참인 사실들 또는 명제들로 부터 새로운 참인 사실 또는 명제를 도출하는 추론방식이다. 대표적으..

인공지능 2021.10.15

Changing a file position

lseek 전 시간에 포스팅 한 file position과 이어진다. current file offset에 내용을 바꿔주는 system call 이 있다. 그것은 lseek함수이다. off_t lseek(int filedes, off_t offset,int whence) 함수의 선언부에 첫번째 인자는 오픈한 파일의 Descriptor가 되고, 두번째는 얼마만큼 이동하겠다 하는 offset이며 마지막 세번째는 어디를 기준으로 해서 이동을 하겠나? 이다. 세번째 인자로는 3개의 argument가 있다. SEEK_SET는 파일의 시작점을 기준으로 두번째 인자인 offset만큼 이동을한다.SEEK_CUR는 현재 위치를 기준으로 offset만큼 이동을 한다.SEEK_END는 파일의 끝을 기준으로 offset만큼 ..

명제 논리

명제 먼저 명제라는 것은 참, 거짓을 분명하게 판정할 수 있는 문장들을 명제라 하고 예를들어 1+1=3 은 거짓인 명제이며 나의 이름은 코코팡이다 라는 문장은 참인 명제이다. 하지만 일어나서 아침을 먹자 와 같이 참과 거짓을 나눌 수 없는 문장은 명제라 할 수 없다. 보통 명제를 표현할 땐 p,q등과 같이 표현하며 실직적으로 명제는 문장자체의 내용에 대해선 무관심하며 참이냐 거짓이냐에 포커스를 둔다. 명제에는 기본 명제와 복합명제가 있다. 기본 명제는 하나의 진술로 이루어진 최소 단위의 명제이고 복합 명제는 기본 명제들이 겹합이 된 명제이다. 단일로 존재하는 P와Q가 기본 명제이며 이를 결합한 P^Q가 복합 명제이다. 논리식 명제를 기호로 표현한 형식이며 명제기호,참과 거짓을 나타내는 T와F, 명제 기호..

인공지능 2021.10.14