여러분도 아시다시피 Set에서는 여러가지 정의가 있습니다. 

set, element, subset, universal set(집합을 덮을 수 있는 전체 집합), set operations.

위의 개념들은 초등학교에서 배우는 것으로 누구나가 다 알 수 있는 사실입니다. 다음으로

  • disjoint sets : A∩B = 
  • partition of A : 부분 집합
  • Cartesian product : 집합의 곱을 뜻합니다. 
    • example) A = {1, 2}, B = {3, 4, 5}
    • A * B = {(1,3), (1,4), (1,5), (2,3), (2,4), (2,5)}
  • power set : 집합 A의 모든 부분 집합을 뜻합니다 -> 2^A

 

  • cardinality A : finite, infinite, countable, uncountable, denumerable(countably infinite)
  • 쉽게 카디널리티는, 차원이라고 생각하면 조금 쉬울 수도 있습니다.
  • 집합(cardinality)에서 A(m), B(n)이라면 AB는 (mn)의 cardinality를 가지게 됩니다.
  • 두개의 집합이 one-to-one이라면, 두 집합의 cardinality는 같습니다.
  • countable : 예를 들어, 자연수의 집합(1,2,3,4 ....) 과 어떤 집합이 one-to-one 대응이 된다면 그를 countable (infinite)라고 부르게 됩니다.
  • 예를 들면, 정수들의 집합과 분수들의 집합은 countable이다. 둘은 자연수의 집합과 one-to-one대응이 되기 댸문이죠. 
  • 그렇다면 정수는 양수만 있는게 아니라 음수만 있는데 그게 어떻게 되냐? 라고 물어 보실 수 있는데요. 이 부분은 무한대에서 2를 곱하면 똑같이 무한대죠? 똑같은 개념입니다. 

 

그래서 이처럼 셀 수 있는 무한대의 집합을 denumerable이라고 부릅니다. 또한 이를, 수학적으로 aleph null이라고 부릅니다.

not countable한 것을 uncountable 이라고 합니다. 한마디로 셀 수 없는 무한 집합입니다. 또한 수학적으로 countinuum이라고 표현하빈다.

이를 설명할 때에는 대표적인 예시가 있습니다.

Q : 0과 1사이의 집합이 몇개 일까요?

A : 무한개요.

위의 답변이 이해가 가시나요? 당연한 얘기입니다. 그렇다면

Q : 0과 1사이의 집합과 정수에서의 집합은 둘 다 같은 무한대인가요?

 

네! 답은 '아니오' 입니다. 이를 증명한게 Cantor라는 수학자입니다. 이를 증명하는 과정은

C = [0, 1]

  1. C를 countable이라 가정
  2. C에 대응하는 시퀀스, S가 존재한다고 가정
  3. 우리가 0과 1사이의 숫자를 다루기 때문에 다음과 같이 표현할 수 있습니다.
  4.  

 

이와 같이 이진법으로 표현할 수 있습니다.

(시퀀스 S에 포함되는) x와 같이 표현하다 보면, 0과 1사이를 모두 표현할 수 있기때문에 countable하다는 것을 알 수 있습니다.

그런데 여기서 d = 1-d를 이용해서 하나씩 바꿔서 만든 x를 생각해 봅시다. 근데 이 새로 생긴 x는 S에 속하나요?

아니요. 0과 1을 바꿔서 만든 새로운 변수이기 때문에 S에 속하지 않고, C에 속하게 됩니다. 

이를 이용하여 모든 x를 바꿔가면서 생각해보면, 일부의 x가 아닌 모든 x에 대해서 생각을 하기 떄문에, 이를 uncountable이라고 표현할 수 있게 됩니다.

  • function or mapping f : U -> V
  • domain U, codomain V (input, output이라고 생각하세요)
  • image f(A) : A는 원소를 얘기하는 겁니다.
  • range f(U) 

 

사실 그래서 많은 machine learning 에서 푸는 문제가 preimage의 형태입니다.

어떠한 label을 가지고 개와 고양이를 train한 문제를 가지고 있을 때, 또 다른 data set, 즉 test set으로 이게 개인지 고양이인지를 파별해야하기 때문이죠.

마지막으로, 

  • one-to-one  or injective : f(a) = f(b) -> a = b
  • onto or injective : f(U) = V
  • invertible : one-to-one and onto 

설명은 그림을 보시면 잘 이해 되실겁니다!

 

Reference

edwith 강의, 최성준님

'# 기타 공부한 것들 > math' 카테고리의 다른 글

posterior과 bayesian  (6) 2018.10.20
Measure theory  (1) 2018.07.26
Local Minimum, Local Maximum  (0) 2018.06.21
Convexity(2)  (3) 2018.06.20
Convexity(1)  (4) 2018.06.20

Jupyter 주요 단축키 모음

여기 있는 단축키는 명령상태에서 [H]를 누르면 보실 수 있습니다.

여기에 없는 나머지 것은 위의 명령어를 통해 확인 하실 수 있습니다.

 

(1) 셀 선택 모드 (Command Mode)

  • 위로 셀 추가    [a]
  • 아래로 셀 추가    [b]
  • 선택 셀 삭제    [d][d] (d를 두번 누름)
  • 선택 셀 잘라내기 (삭제로 써도 무방)    [x]
  • 선택 셀 복사하기     [c] 
  • 선택 셀 아래에 붙여넣기    [p] 
  • 선택 셀과 아래 셀과 합치기    [shift] + [m]
  • 실행결과 열기/닫기    [o]
  • Markdown으로 변경    [m]
  • Code로 변경    [y]
  • 파일 저장    [cmd] + [s] 또는 [s] 
  • 선택 셀의 코드 입력 모드로 돌아가기    [enter]

 

(2) 코드 입력 모드 (Edit Mode)

  • 선택 셀의 코드 전체 선택    [ctrl] + [a]
  • 선택 셀 내 실행 취소    [ctrl] + [z]
  • 선택 셀 내 다시 실행    [ctrl] + [y]
  • 커서 위치 라인 주석처리    [ctrl] + [/]
  • 선택 셀 코드 실행    [ctrl] + [enter]
  • 선택 셀 코드 실행 후 다음 Cell로 이동 (없으면 새로 추가)    [shift] + [enter]
  • 커서 위치에서 셀 둘로 나누기    [shift] + [ctrl] + [-]
  • 셀 선택 모드로 돌아가기    [esc] 또는 [ctrl] + [m]

'# 기타 공부한 것들 > etc' 카테고리의 다른 글

ML 공부용 사이트들  (0) 2018.12.17
Google Colab GPU 사용  (0) 2018.11.27
Java Queue 간단 예제  (0) 2018.11.05
JAVA String reverse하기  (0) 2018.11.05
(Unity) 캐릭터 이동시키는 몇 가지 방법  (0) 2018.07.09

구글링하면 누구나 해결방법을 아래와 같이 볼 수 있는데..

 

android:elevation -> 0dp

하지만, 가끔 이게 동작되지 않을 때가 있는데 그럴 경우엔

app:elevation -> 0dp 

로 해주면 작동이 잘 되는것을 확인할 수 있다. 

 

 

 

'# 기타 공부한 것들 > Android' 카테고리의 다른 글

Volley 사용하기(GET, POST)  (0) 2018.08.06
Nevigation View 만들기  (0) 2018.07.26
Fragment(프래그먼트) 만들기  (0) 2018.07.15
(MAC) Android Studio 단축키  (0) 2018.07.01
Android Project Review with BP(2)  (0) 2018.06.18

요즘 앱을 사용하시면 거의 모든 것들에서 프래그먼트를 상뇽하고 있다는 것을 쉽게 알 수 있습니다.

그만큼 효율적이고, 잘만 만든다면 코드도 간략해 질 수 있습니다.

 

프래그먼트를 만들려면 2가지 준비물만 만드실 수 있으시면 됩니다.

1. Java Class

2. layout XML

2가지를 만들수만 있다면, 몇 가지 코드만 작성하면 프래그먼트를 만들 수 있는데요.

---------------------------------------------------------------------------------------------------------------------------

Fragment 만들기

1. Java Class파일에 Fragment를 extends하기. 

2. Activity에서도 onCreate가 있듯이, 프래그먼트도 그와 같은 역할을 하는 메소드가 있습니다.

사진과 같이 onCreateView라는 메소드입니다. 

이제 이 안에서 return 부분을 지워주시고, 밑의 두  사진과 같이 입력해주시면 됩니다.

 

* R.layout.fragment_exam은 여러분이 만든 layout파일입니다. container은 메소드에 있는 ViewGroup parameter을 그대로 써주시면 됩니다.

* attachToRoot는 activity화면에 프래그먼트를 바로 붙여줄 것인지, 호출 시에 붙여줄 것인지를 정하는 파라미터입니다. false해주시면 됩니다.

 

3. 위에서 사용햇듯이, layout파일은 여러분이 만든걸로 ^^

자, 그럼 이제 프래그먼트를 액티비티에 올릴 준비가 되었습니다.

mainActivity로 가볼까요?

이 mainActivity에는 container라는 id를 가진 FrameLayout이 있다고 가정하겠습니다. 

프래그먼트를 붙일려면 단 한줄의 코드만 작성해 주시면 됩니다.

프래그먼트는 기본적으로 액티비티와는 조금 다른 구조를 가지게 됩니다.

 Transaction을 통해 시작을 시켜야만 하는데요. 이 모든것이 한줄에 다 들어갈 수 있습니다. 

 

* R.id.container은 위에서 가정한 FrameLayout입니다. 

* fragmentExam은 Fragment를 상속받은 Java Class입니다. 

* commit() 또한, 빼먹지 말아야 합니다.

 

onCreate에 작성하시고 실행시키면 여러분이 만든 프래그먼트가 activity에 올려져 있을겁니다.

 

+) add는 되도록이면 처음 프래그먼트를 넣어줄때만 쓰시는게 좋습니다. 나머지는 전부 add가 아닌 replace를 쓰셔야 합니다.

(쓰는 방법은 똑같습니다^^)

'# 기타 공부한 것들 > Android' 카테고리의 다른 글

Nevigation View 만들기  (0) 2018.07.26
Toobar, appbar 경계선 없애기  (0) 2018.07.25
(MAC) Android Studio 단축키  (0) 2018.07.01
Android Project Review with BP(2)  (0) 2018.06.18
Android Project Review with BP(1)  (0) 2018.06.16

Unity에서 캐릭터, 즉 오브젝트를 움직일 수 있는 방법 몇 가지를 소개해 드리려고 합니다.

여러가지가 있는데 그 중에서 자주 쓰일법한 것만 적어 놓겠습니다.

 

1. Transform의 Position에 직접 접근

2. Transform의 Translate 사용

--------------------------------사실 여기까지가 사용하기도 쉽고 이해하기도 쉽습니다.

3. Rigidbody의 velocity설정 (이 부분은 오브젝트 움직임보다는 가속도 개념으로 접하시는게 더 좋을 것 같아요)

4. Character Controller이용

 


1. Position of Transform

직접 정의한 x, y, z를 가진 Vector2 or Vector3를 생성하시고(new) transform.position에 접근하여서 대입해줄수도 있고, 게임에 따라서 더하고 뺴주는 연산을 할 수 도 있습니다.


2. Translate of Transform

따로 설명이 필요 없겟죠?


3. velocity of Rigidbody

3-1

 

3-2

두번 째 방법은 AddForce메소드를 사용하는 방법입니다. (에러는 무시하세요.)


4. Character Controller 

 

마치며, 초보자 수준에서는 1, 2번째 방법이 편하고 다른 방법을 쓰지 않아도 게임이 잘 만들어집니다.

'# 기타 공부한 것들 > etc' 카테고리의 다른 글

ML 공부용 사이트들  (0) 2018.12.17
Google Colab GPU 사용  (0) 2018.11.27
Java Queue 간단 예제  (0) 2018.11.05
JAVA String reverse하기  (0) 2018.11.05
Jupiter notebook 단축키(MAC)  (0) 2018.07.25