Важная информация

User Tag List

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 34

Тема: Деревья хаффмана - как с ними работать

  1. #11
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    alone, а как это делается в виде программы для Z80 есть?
    Нет. Да и зачем оно отдельно? Потом всё равно урезать дерево до 15 ярусов, сортировать символы в ярусах, кодировать длины ярусов. Да и без LZ это не нужно. Проще переделать ZXRar под нужный формат, как сделано в mRIP.

  2. #12
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    263
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    206 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    alone, у меня уже есть данные которые надо както оптимизированно утоптать
    есть данные 16 бит +16 бит которые желательно упихать в 2-16 бит

    ---------- Post added at 15:33 ---------- Previous post was at 15:09 ----------

    есть 6 байт

    1 2 3 4 5 5

    и есть вот такой генератор таблиц

    Код:
    .MakeHuff:
    	ld	a,5
    	call	.GetBits
    
    	ld	a,(rncdat)
    	or	a
    	ret	z
    
    	ld	(temp1),a
    	ld	b,a
    
    	ld	hl,tmptab
    .MakeHuff2:
    	push	bc
    	push	hl
    	ld	a,4
    	call	.GetBits
    	pop	hl
    	ld	a,(rncdat)
    	ld	(hl),a
    	inc	hl
    	pop	bc
    	djnz	.MakeHuff2
    
    	xor	a
    	ld	(regy),a
    	inc	a
    	ld	(bitlen),a
    	ld	hl,0
    	ld	(hufcde),hl
    	ld	hl,#8000
    	ld	(hufbse),hl
    .MakeHuff3:
    	ld	a,(temp1)
    	ld	(temp2),a
    
    	xor	a
    	ld	(temp3),a
    
    .MakeHuff4:
    	ld	a,(temp3)
    	ld	(regx),a
    
    	ld	hl,tmptab
    	call	hla
    	
    	ld	a,(bitlen)
    	cp	(hl)
    	jp	nz,.MakeHuff8
    
    	ld	(regx),a
    	add	a,a
    	ld	hl,.msktab
    	call	hla
    
    	ld	a,(regy)
    	ld	c,a
    	add	a,2
    	ld	(regy),a
    
    	ld	de,(hufftab)
    	ld	a,c
    	call	dea
    
    	ldi
    	ldi
    
    	ld	bc,(rncdat)
    	ld	de,(hufcde)
    
    	ld	a,(regx)
    
    .MakeHuff5:
    	sla	e
    	rl	d
    	rr	b
    	rr	c
    
    	dec	a
    	jr	nz,.MakeHuff5
    
    	ld	hl,rncdat+3
    	ld	(hl),d
    	dec	hl
    	ld	(hl),e
    	dec	hl
    
    	ld	a,(bitlen)
    	ld	e,a
    
    	ld	a,16
    	sub	e
    	jr	z,.MakeHuff7
    
    .MakeHuff6:
    	srl	b
    	rr	c
    
    	dec	a
    	jr	nz,.MakeHuff6
    
    .MakeHuff7:
    	ld	(hl),b
    	dec	hl
    	ld	(hl),c
    
    	ld	a,(regy)
    	ld	b,a
    	add	2
    	ld	(regy),a
    
    	ld	hl,(hufftab)
    	ld	a,b
    	call	hla
    
    	ld	de,(rncdat)
    	ld	(hl),e
    	inc	hl
    	ld	(hl),d
    	inc	hl
    
    	ld	de,15*4
    	add	hl,de
    
    	ld	a,(temp3)
    	ld	(hl),a
    
    	inc	hl
    
    	ld	a,(bitlen)
    	ld	(hl),a
    
    	ld	bc,(hufbse)
    
    	ld	hl,(hufcde)
    	add	hl,bc
    	ld	(hufcde),hl
    
    .MakeHuff8:
    	ld	hl,temp3
    	inc	(hl)
    
    	ld	hl,temp2
    	dec	(hl)
    	jp	nz,.MakeHuff4
    
    	ld	hl,hufbse+1
    	srl	(hl)
    	dec	hl
    	rr	(hl)
    
    	ld	a,(bitlen)
    	inc	a
    	ld	(bitlen),a
    
    	cp	17
    	jp	nz,.MakeHuff3
    
    	ret
    hla
    	add	a,l
    	ld	l,a
    	ret	nc
    	inc	h
    	ret
    dea
    	add	a,e
    	ld	e,a
    	ret	nc
    	inc	d
    	ret
    и потом оно
    вот этой подпрограммой хрен пойми как что то там выколупывает
    Код:
    ;**********************************
    
    .GetVal:
    	ld	hl,(hufftab)
    	dec	hl
    .GetVal2:
    
    	inc	hl
    .GetVal3:
    	ld	bc,(bitbufl)
    	ld	a,c
    	and	(hl)
    	ld	c,a
    	inc	hl
    	ld	a,b
    	and	(hl)
    	ld	b,a
    	inc	hl
    	ld	(rncdat),bc
    
    	ld	a,c
    	cp	(hl)
    	inc	hl
    	jr	nz,.GetVal2
    
    	ld	a,b
    	cp	(hl)
    	inc	hl
    	jr	nz,.GetVal3
    
    	ld	de,15*4
    	add	hl,de
    
    	ld	a,(hl)
    	inc	hl
    	push	af
    	ld	a,(hl)
    	call	.GetBits
    	pop	af
    	cp	2
    	jr	nc,.GetVal4
    
    	ld	hl,rncdat
    	ld	(hl),a
    	inc	hl
    	xor	a
    	ld	(hl),a
    	ret
    .GetVal4:
    	dec	a
    	push	af
    	call	.GetBits
    	pop	af
    	ld	b,a
    	inc	b
    	ld	hl,1
    	jr	.GetVal5a
    .GetVal5:
    	add	hl,hl
    .GetVal5a:
    	djnz	.GetVal5
    
    	ld	de,(rncdat)	
    	ld	a,e
    	or	l
    	ld	e,a
    	inc	hl
    	ld	a,d
    	or	h
    	ld	d,a
    	ld	(rncdat),de
    	ret
    С уважением,
    Jerri / Red Triangle.

  3. #13
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    есть 6 байт

    1 2 3 4 5 5
    Это частоты? Нужны частоты для всех литералов.

  4. #14
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    263
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    206 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    alone, я не знаю что это
    я надеялся ты расскажешь
    С уважением,
    Jerri / Red Triangle.

  5. #15
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Юра, ты в получаешь те же самые вопросы, что я тебе задавал.

    Для каждого случая ты будешь получать свое дерево, если ты хочешь наиболее оптимальный хаффман.

    Хранить деревья просто, достаточно указать группы бит, по которым группируются значения, по хаффману.

    Я не знаю, есть ли пакеры, которые строят каждый раз своё дерево, лучше спроси АлКо.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  6. #16
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    определенно есть пакеры, которые строят дерево в реальном времени по ходу работы.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    263
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    206 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    GriV, а я кого спрашиваю?

    я разобрался как оно работает
    С уважением,
    Jerri / Red Triangle.

  9. #18
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    263
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    206 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вобщем так

    есть набор чисел

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    есть повторяемость каждого числа

    как мне из этих данных сделать дерево?
    желательно в виде примера кодирования и использования

    при этом может оказаться что каких то из чисел вообще нет
    С уважением,
    Jerri / Red Triangle.

  10. #19
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    263
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    206 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию я просто оставлю это здесь RNC_propack

    распаковщик для спектрума RNC_propack

    переписан под спек
    Вложения Вложения
    С уважением,
    Jerri / Red Triangle.

  11. #20
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    263
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    206 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    1 2 3 4 5 5
    Цитата Сообщение от alone Посмотреть сообщение
    Это частоты? Нужны частоты для всех литералов.
    нет это не частоты
    это длина этой позиции в битах в дереве хаффмана

    позиция же указывает сколько бит нужно взять из потока для получения ссылки
    исключением являются позиции 0 и 1 - они считаются безусловными цифрами

    т.е если меньше 2х то возвращаем число

    если n больше или равно 2 то берем n-1 бит из потока и устанавливаем бит n-1
    С уважением,
    Jerri / Red Triangle.

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ДВК (и всё, что с ними связано)
    от Grand в разделе ДВК, УКНЦ
    Ответов: 4534
    Последнее: 04.04.2024, 23:32
  2. PAL/GAL и все что с ними связано.
    от Mick в разделе Клоны на ПЛИС, МК и БМК
    Ответов: 487
    Последнее: 01.12.2023, 00:30
  3. Видеорежимы и работа с ними
    от icebear в разделе Программирование
    Ответов: 23
    Последнее: 26.07.2005, 12:55
  4. Видеорежимы и работа с ними
    от icebear в разделе Несортированное железо
    Ответов: 3
    Последнее: 21.07.2005, 11:49

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •