udyjpark.egloos.com

룰루랄라

포토로그



TSP Java

Traveling Sales Problem Java Source Code


Public class TSPSolve {
int D[][];
int W[][];
int N, N_POW;

public void computeTSP(int data[][], int n) {
N = n;
N_POW = 1 << n;
W = data;
D = new int [N][N_POW];
for ( int i =0;i<N;i++) { 
for(int j=0;j<N_POW;j++) {
D[i][j] = -1;
}
}
//first step :  D[i][{}]  = W[i][0]
for(int i = 0;i < N ; i ++) {
D[i][0] = W[i][0]; 
}
int start = 0;
// D[A][{B,C,D}]-> D[start][{1110}]  
int cost = tsp( start, N_POW -2);
}
public int tsp(int start, int subset) {
int mask, masked ;
int temp, result=-1;

if(D[start][subset] != -1) 
return [start][subset];
for ( int i = 0;i < N ; i++ ) {
mask = (N_POW-1) - (1 << i ) ;
masked = subset & mask;
if(subset != masked) {
// D[A][{BCD}] = min ( W[A][B] + D[B][{C,D}], W[A][C] + D[C][{B,D}] ,W[A][D] + D[D][{B,C}] )
// i=1 , masked = 1100, W[A][B] + D[B][{C,D}] -> W[0][1] + tsp(1,1100) <- recursive call
// D[B][{C,D}]  = min (W[B][C] + D[C][{D}], W[B][D] + D[D][{C}] 
// W[B][C] + D[C][{D}] -> W[1][2] + tsp(2,1000) <- recursive call
//  D[C][{D}] = W[C][D] + D[D][{}] -> W[2][3] + tsp(3,0000) <- first step value will be returned
// W[B][D] + D[D][{C}] -> W[1][3] + tsp(3,0100) <- recursive cal
//  D[D][{C}] = W[D][C] + D[C][{}] -> W[3][2] + tsp(2,0000) <- first step value will be returned
// i=2, masked = 1010 W[A][C] + D[C][{B,D}] ...  
// i=3, masked = 0110 W[A][D] + D[D][{B,C}] ...

temp = W[start][i] + tsp(i, masked);
if( result == -1 || result > temp) {
result = temp;
}
}
}
D[start][subset] = result;
return D[start][subset];
}
}

Oracle SQL 날짜 계약 완료비 관련

ADD_MONTHS(TO_DATE('2060708','YYYYMMDD'), decode( sign(to_date('20160708,'YYYYMMDD')-sysdate ),1,CEIL(MONTHS_BETWEEN(SYSDATE,TO_DATE(20160708,'YYYYMMDD'))),0))

SED 쓰벌... script

이건 머 할때마다 삽질이니...(-r옵션을 쓰도록 하자 )
조흔 링크
http://www.grymoire.com/Unix/Sed.html#uh-41

정규식 간략 메모(-r옵션 안쓸경우)
  • 첫문자가 숫자로 시작되는 경우 검사 : /^[0-9][0-9]*/
  • 연속된 하나이상의 공백문자를 탭문자로 치환 : s/[ ][ ]*/\t/g

/^[0-9][0-9]* /{
    s/[ ][ ]*/\t/g
    1!{
        x
        s/\n/ /g
        p
        g
    }
    $q
    h
    d
}
/^[0-9][0-9]* /!{
    H
    d
}



Grub2 Creat Multiboot USB Linux

USB를준비한뒤 포맷(FAT32)
Grub2가 설치된 Linux(Ubuntu)에서 시작
Grub2 의 grub-install 명령어로 usb에 grub을 인스톨함.
grub.cfg의 내용을 수정하여 부팅 리스트 편집 끝

grub-mkconifg가 에러나서 아래 명령으로 돌려봄.
sh -x /usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg

Syslinux(Extlinux) Linux

Syslinux나 Extlinux나 거기서 거기임( Extlinux는 변종(파생?))

Configuration
부팅시 부트로더는 syslinux.conf나 extlinux.conf를 찾음

TIMEOUT value : 1/10 Second 단위

PROMPT value : 1 or 0 가능 

LABEL String  

APPEND:  DEVICE이름, UUID나 Root 파티션 라벨 사용
  • APPEND root=/dev/sda1 
  • APPEND root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff
  • APPEND root=LABEL=MYVOLUME
-----------------------------------------------------------
/boot/extlinux/extlinux.cfg
 PROMPT 1   #프롬프트 없이 부팅을 할경우 값을 0로 설정
 TIMEOUT 50
 DEFAULT arch # 디폴트 부팅메뉴 선택
 
 LABEL arch                       
         LINUX /vmlinuz-linux
         APPEND root=/dev/sda2 #Root Partion
         INITRD /initramfs-linux.img
 
 LABEL archfallback
         LINUX ../vmlinuz-linux
         APPEND root=/dev/sda2 rw
         INITRD ../initramfs-linux-fallback.img
-----------------------------------------------------------


Text Menu Boot
부트 메뉴를 사용하기 위해서 menu.32c가 필요함
cp /usr/lib/syslinux/bios/menu.c32 /boot/syslinux/
-----------------------------------------------------------
 UI menu.c32
 PROMPT 0
  MENU TITLE Boot Menu
 TIMEOUT 50
 DEFAULT arch
 LABEL arch
         MENU LABEL Arch Linux
         LINUX ../vmlinuz-linux
         APPEND root=/dev/sda2 rw
         INITRD ../initramfs-linux.img
 LABEL archfallback
         MENU LABEL Arch Linux Fallback
         LINUX ../vmlinuz-linux
         APPEND root=/dev/sda2 rw
         INITRD ../initramfs-linux-fallback.img
-----------------------------------------------------------

Graphical boot menu
부팅시 색좀 넣을려면 
# cp /usr/lib/syslinux/bios/vesamenu.c32 /boot/syslinux
-----------------------------------------------------------
 UI vesamenu.c32

 MENU BACKGROUND splash.png
MENU WIDTH 80
MENU MARGIN 10
MENU PASSWORDMARGIN 3
MENU ROWS 12
MENU TABMSGROW 18
MENU CMDLINEROW 18
MENU ENDROW -1
MENU PASSWORDROW 11
MENU TIMEOUTROW 20
MENU HELPMSGROW 22
MENU HELPMSGENDROW -1
MENU HIDDENROW -2
MENU HSHIFT 46
MENU VSHIFT 30
....
-----------------------------------------------------------
 


1 2 3 4 5 6 7