PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2012/05/22 22:40:51
Name 라올
Subject [컴퓨터+수학] 특정 함수의 구성을 어떻게 하는가 질문드립니다.
제가 생각하는 함수가 가능한지의 여부와 혹시 가능하다면,
예를 들어서 어떤방법으로 하면 가능할 것이라는 의견을 듣고 싶습니다. ㅠㅠ

A란 집합이 있는데, 이 집합은 이산적인 숫자로 이루어져있고, 무조건 1부터 N까지의 원소가 담겨 있습니다.
예를 들면 A = { 1, 2, 3, 4, 5 }와 같은 집합말입니다.

그리고 X라는 함수가 있습니다. 이 함수는 집합 A에 해당하는 원소를 계산하여 결과를 출력합니다.
예를 들어, X 함수는 1부터 5까지의 입력값을 넣었을 때, 입력에 따른 결과값이 중복되지 않습니다.
그리고 각각의 결과값의 범위는 입력한 값의 범위내에서 나올 수 있도록 구성이 되어있습니다.

ex) 집합 A의 원소를 함수 X에 넣고 나온 결과.
1 -> 3,
2 -> 1,
3 -> 5
4 -> 2
5 -> 4

제가 위에 가정한 함수 X의 기능을 다시 표현하자면, 상수 시간안에 순서를 Random하게 뽑아 줄 수 있는 함수입니다.
함수 X를 구성하는 식의 변수를 바꿔서, 매번 결과값이 입력한 값의 범위내로 나오면서, 그 입력값이 다르더라도 결과값이 중복되지 않는 함수를 구성하고 싶습니다.

여러 고민들을 하다가 제가 생각한 방법은 나선형 함수에 값을 대입하여 얻은 x,y값들을 토대로 원점(0, 0)에서 떨어진 거리를 구한 후,
가장 가까운것부터 먼 것까지의 순서를 구하는 방법으로 함수 X를 구성하면 되겠다고 생각했습니다.
하지만, 결과값이 중복되지 않는다고 보장할 수 없으며, 가까운 것 부터 먼것을 정리하는 계산에서 상수시간을 넘어버리게 됩니다.

과연 제가 위에 가정한 함수 X가 실제로 만들어질 수 있는것인지, 있다면 어떻게 만들어야하는지 PGR여러분의 도움을 받고 싶습니다. ㅠㅠ

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
꿀호떡a
12/05/22 22:45
수정 아이콘
정리하자면 Random Permutation, 그러니까 1~N을 random하게 섞는 함수를 말씀하시는 것 같은데, 결론부터 말씀드리자면 상수 Complexity를 가지는 함수는 불가능합니다. O(N) 정도에 주어진 배열을 random하게 섞는 알고리즘은 많이 알려져있으니 찾아보셔요.
사박사
12/05/22 23:56
수정 아이콘
혹시 matlab 쓰시면 randperm 함수 찾아보세요.
간단한 설명은 바로 밑에
p = randperm(n) returns a row vector containing a random permutation of the integers from 1 to n inclusive.

randperm이 프로그래밍 하고자 하는 함수라면
randperm.m 화일 matlab이나 notepad에서 열어서 알고리즘 확인하면서 원하시는 language로 바꾸시는 게 가장 편할 듯.
사박사
12/05/23 00:02
수정 아이콘
randperm이 가장 간단한 형태이고 다른 버젼의 permutation 함수도 많이 있으니 참조하시길.
청바지
12/05/23 01:16
수정 아이콘
어느정도의 랜덤함을 원하시는지 몰라도..
입력 숫자를 x라고 하면 x*p+k (mod N)을 계산하는 정도로 간단히 상수시간 구현은 가능합니다.
(p는 N과 서로소인 수, k는 임의의 수, mod N은 N으로 나눈 나머지 입니다.)

예를들면
1,2,3,4,5
가 집합 A이면, p=3,k=2로 잡았다고 했을때
1 => 1*3+2 = 5 (mod 5) = 5
2 => 2*3+2 = 8 (mod 5) = 3
3 => 3*3+2 = 11 (mod 5) = 1
4 => 4*3+2 = 14 (mod 5) = 4
5 => 5*3+2 = 17 (mod 5) = 2
와 같은 식으로 섞이게 되는데 문제는 결과에 규칙성이 있다는 거죠.
(p과 N과 서로소라는 조건이 중요합니다. 그러면 결과에 중복이 생기지 않아요.)

하지만 어떤 문제에 적용하느냐에 따라서 (특히 p와 k를 랜덤으로 잡으면) 쓰일수도 있는 방법입니다. 참고하세요~
12/05/23 12:57
수정 아이콘
다들 감사합니다 ㅠㅠ 청바지님이 알려주신 것은 암호학에서 배운 거였는데 기억을 못했네요. 참고하겠습니다!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
135484 [디아블로3] 마법사 질문입니다.// 인증기 질문 [3] 굼시1516 12/05/23 1516
135483 블리자드 얘네들은 디아3 사설채널을 만들생각이 있는걸까요? [4] 사진2135 12/05/23 2135
135481 [lol]아리하시는 분들 룬 질문입니다! [7] 세느2126 12/05/23 2126
135480 갑자기 보일러에서 소음이 계속나네요.. [1] 국카스텐1696 12/05/23 1696
135479 생물에 관한 maintenance 대해 질문드립니다. 날아라..1314 12/05/23 1314
135478 ssd와 hdd사용과 웹하드 사용에 대하여 질문있습니다. [6] Go윤하2616 12/05/23 2616
135477 리누이 백팩 아시는 분 있나요? [1] 울랄랄라6017 12/05/23 6017
135476 웹툰찾습니다 [3] 낭만토스1587 12/05/23 1587
135475 [lol/서포터] 2돈템이후 지크의 전령 어떻게 생각하시나요? [8] 동모형2300 12/05/23 2300
135474 천체관측용 쌍안경 추천부탁드려요! 이뿌니사과2295 12/05/23 2295
135473 디아3 질문입니다 [2] 야누스1593 12/05/23 1593
135472 [디아3] 경매장 입찰취소하기 [8] 리드2235 12/05/23 2235
135471 종북으로 얻는 이득이 뭐가있나요? [8] claud772049 12/05/23 2049
135470 이 중국집이 어디있는지 궁금합니다. [2] 오프라인표시1816 12/05/23 1816
135469 스타2 프로게이머들 실력차이? [11] 보아2078 12/05/23 2078
135468 KT 유심카드로 갤럭시S를 사용할 수 있나요? [3] greensocks2062 12/05/23 2062
135466 일요일부터 오늘까지 프로리그/스타리그 경기 추천해주세요! [2] VKRKO 1562 12/05/22 1562
135464 [컴퓨터+수학] 특정 함수의 구성을 어떻게 하는가 질문드립니다. [7] 라올1573 12/05/22 1573
135463 예전 글 좀 찾고 싶습니다~ [3] 발로텔리2065 12/05/22 2065
135462 갤노트 아샌 업그레이드 질문입니다!! [4] 박예은­1524 12/05/22 1524
135460 조용하고 감미로운 음악 추천 해주세요 [5] 플토만세1524 12/05/22 1524
135458 디아블로 접속되나요? 아스날1214 12/05/22 1214
135457 매트랩 잘쓰시는 분 계신가요? [1] start1570 12/05/22 1570
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로