Hódító / Queosia forum
Hódító / Queosia forum
http://queosia.com
http://hodito.hu

Go Back   Hódító / Queosia forum > Hódító / Queosia forum > Általános beszélgetések > PC (hardver, szoftver, játékok stb.)
Register Stats Members List Today's Posts

PC (hardver, szoftver, játékok stb.) Minden, ami számítógép. Kedvenc játékod megbeszélése, segítségkérés hardverügyben stb.

Reply
 
Thread Tools Search this Thread Display Modes
  #141  
Old 11-12-2011, 18:30
Kutyuleee's Avatar
Kutyuleee Kutyuleee is offline
Member
 
Join Date: Jan 2007
Location: Budapest
Posts: 2,965
Activity: 0%
Longevity: 94%
Default

egy forráskódot nekem is küldenél??? elsőre én is hasonló algoritmusban gondolkodtam csak nem volt időm még foglalkozni vele.

Még annyi a kérdés, hogy az eredeti feladatban használható-e rekurzió vagy nem?
__________________
Az élet olyan mint 1 simson, ha nem megy be kell rúgni




Last edited by Kutyuleee; 11-12-2011 at 18:33..
Reply With Quote
Sponsored Links
  #142  
Old 11-12-2011, 19:15
Cpt Balu Cpt Balu is offline
Junior Member
 
Join Date: Mar 2011
Posts: 47
Activity: 0%
Longevity: 72%
Default

Gondolom igen, csak erősen nem ajánlott Területvizsgálatnál egy rekurzió hamar elszabadulhat (pl. felezéses közelítéseknél ha nincs limit, akkor 2^n felé tart a lehetséges újrahívások száma, ami elég bizonytalan futási időt eredményez)
Reply With Quote
  #143  
Old 11-12-2011, 19:29
Kutyuleee's Avatar
Kutyuleee Kutyuleee is offline
Member
 
Join Date: Jan 2007
Location: Budapest
Posts: 2,965
Activity: 0%
Longevity: 94%
Default

Quote:
Originally Posted by Cpt Balu View Post
Gondolom igen, csak erősen nem ajánlott Területvizsgálatnál egy rekurzió hamar elszabadulhat (pl. felezéses közelítéseknél ha nincs limit, akkor 2^n felé tart a lehetséges újrahívások száma, ami elég bizonytalan futási időt eredményez)
ezzel tisztában vagyok, de annyira nem vészes, ebben az esetben. csak mert szerintem megirnám rekurziv backtrack-kel is. ugyis kell gyakorolnom majd vizsgára, meg azért is, mert van olyan tételem, hogy rekurzív fügvényt kell átirni simára, és vissza.
__________________
Az élet olyan mint 1 simson, ha nem megy be kell rúgni



Reply With Quote
  #144  
Old 11-12-2011, 19:34
Cpt Balu Cpt Balu is offline
Junior Member
 
Join Date: Mar 2011
Posts: 47
Activity: 0%
Longevity: 72%
Default

Az átírás gyakorlatilag annyi, hogy while ciklus helyett függvényt hívsz
rekurziót akkor érdemes használni, ha egyébként túl sok köztes eredményt és állapotot kellene tárolni, ezt a függvény hívása megoldja nekünk, de pont ez a gyengéje is, a hívás és visszatérés sokszor lényegesen több mint maga a programkód futási ideje, ekkor kell választani, egy kis plusz programozásért cserébe gyorsíthatunk a kódon.
Elkezdem szép lassan írni az oldalra a jelenlegi progi algoritmusát is, remélem érdekesnek találjátok majd a gondolatmenetet
Reply With Quote
  #145  
Old 11-12-2011, 20:24
Dus Dus is offline
Member
 
Join Date: Apr 2007
Location: Budapest
Posts: 2,382
Activity: 0%
Longevity: 93%
Default

Quote:
Originally Posted by Cpt Balu View Post
(ps: ha moderátoroknak kifogásuk van linkelés miatt, várnék javaslatot hogy tudnám megoldani a képes postokat, img tagek behozták a képeket oszt el is tüntették rögtön, gondolom tiltva van külső hivatkozás bbc-ben)
Elvileg nincs, és img tagek jól működnek. Legalábbis eddig jól működtek. Nem lehet, hogy inkább a külső linkelés van letiltva annál az oldalaknál, ahonnan behúztad a képet? Mert olyat szoktak. Bár képmegosztó oldalaknál nem, de pl. az ingyenes tárhelyszolgáltatók ezt csinálják, hogy ne használd a tárhelyüket "háttértárolónak" egy másik oldalhoz.
Reply With Quote
  #146  
Old 11-12-2011, 20:50
Cpt Balu Cpt Balu is offline
Junior Member
 
Join Date: Mar 2011
Posts: 47
Activity: 0%
Longevity: 72%
Default

Erre nem is gondoltam, köszi...
A fura h előnézetnél egy pillanatra megjelentek a képek, aztán eltűntek belőle, ezért gondoltam h fórum motor csinálja.
Időközben befejeztem az algoritmus leírásának első lépését, a "profilozást" (talán valakinek ismerős lesz a módszer), feltettem az oldalamra, nemsokára megírom az utolsó lépést, ami saját szerzemény, és kicsit bonyolult, de megpróbálom érthetően
Reply With Quote
The Following User Says Thank You to Cpt Balu For This Useful Post:
  #147  
Old 11-12-2011, 21:22
Cpt Balu Cpt Balu is offline
Junior Member
 
Join Date: Mar 2011
Posts: 47
Activity: 0%
Longevity: 72%
Default

Update: mialatt írtam a cikket, észrevettem egy dolgot, amit beletettem a progiba
Az új eredmény (csak a kritikus rész):

99,200% 393 415 463
99,300% 402 423 444
99,400% 430 450 474
99,500% 444 462 471
99,600% 440 459 471
99,700% 432 442 456
99,800% 399 420 438

Egyértelmű a javulás, lám egyetlen integerrel mi mindent lehet tenni... (A becslés szerint a javulás mértéke a tábla méretével arányos)

Last edited by Cpt Balu; 11-13-2011 at 20:29..
Reply With Quote
  #148  
Old 11-14-2011, 18:12
Cpt Balu Cpt Balu is offline
Junior Member
 
Join Date: Mar 2011
Posts: 47
Activity: 0%
Longevity: 72%
Default

Quote:
Originally Posted by Kutyuleee View Post
egy forráskódot nekem is küldenél??? elsőre én is hasonló algoritmusban gondolkodtam csak nem volt időm még foglalkozni vele.

Még annyi a kérdés, hogy az eredeti feladatban használható-e rekurzió vagy nem?
Mivel a megoldás maga egyszerűbb, mint a magyarázkodás :P ezért itt postolom az algoritmust C# kódját:
Code:
public static class Searcher
{
	public static int[,] Table;
	static int Width, Height;<-- Tábla méretei
	public static void SetTable(int W, int H)
	{Adott méretű tábla generálása}
	public static void Fill(double p)
	{Feltöltés random szám segítségével, Rand<p?1:0 alapján}
	public static void Search(ref int X, ref int Y, ref int W, ref int H)
	{A kereső függvényünk}
}
Eddig a bevezetés, hogy hogy is néz ki a tábla, tehát int tömb, 1 és 0, ebben fogunk keresgélni.
A következő függvény adja a megoldást, az eredmények
X,Y,W,H változókba kerülnek (híváskor W értéke -1, a többi lényegtelen), amit a hívás helyén tudunk felhasználni:
Code:
public static void Search(ref int X, ref int Y, ref int W, ref int H)
{
	int[,] Dists = new int[Width, Height];
	int[] Stack1 = new int[Width];
	int Stack1P = 0;
	for (int i = Width - 1; i > -1; i--)
	{
		for (int j = Height - 1; j > -1; j--)
			if (Table[i, j] == 1)
				Dists[i, j] = (i == Width - 1 || Table[i + 1, j] == 0) ? 1 : Dists[i + 1, j] + 1;
			else
				Dists[i, j] = 0;
		Stack1[i] = 0;
	}
	for (int i = 0; i < Width; i++)
		if (W == -1 || (Width - i) * Height > W * H)
		{
			int C1 = 0;
			int CF = 0;
			while (C1 <= Height)
			{
				int N = C1 == Height ? 0 : Dists[i, C1];
				if (N == 0)
					CF = C1 + 1;
				while (N != Stack1P)
				{
					if (N > Stack1P)
					{
						Stack1[Stack1P] = C1;
						Stack1P++;
					}
					else if (N < Stack1P)
					{
						Stack1P--;
						int newh = C1 - Stack1[Stack1P];
						int neww = Stack1P + 1;
						if (neww * newh > W * H)
						{
							W = neww;
							H = newh;
							X = i;
							Y = Stack1[Stack1P];
						}
						Stack1[Stack1P] = -1;
						if (Stack1[Stack1P] == CF)
							Stack1P = N;
					}
				}
				C1++;
			}
		}
}
Nem túl hosszú kód, de annál bonyolultabb értelmezni, kíváncsi vagyok ki jön rá mit is csinál pontosan Lehet ötletelgetni!
Segítség: az első for ciklus (for (int i = Width - 1; i > -1; i--)) törzsének végéig az oldalon leírtak szerint működik.
Reply With Quote
The Following User Says Thank You to Cpt Balu For This Useful Post:
  #149  
Old 11-14-2011, 18:57
csabi's Avatar
csabi csabi is offline
Member
 
Join Date: Feb 2008
Location: widnes
Posts: 1,633
Activity: 0%
Longevity: 89%
Default

__________________
"Holnapi előrejelzés: szitáló zsenialitás, heveny végítélet."
Reply With Quote
The Following User Says Thank You to csabi For This Useful Post:
  #150  
Old 11-14-2011, 19:16
Ati Ati is offline
Administrator
 
Join Date: Jan 2006
Posts: 25,218
Activity: 19%
Longevity: 100%
Default

Más szerverről kell beilleszteni a képet. Valami olyanról, ami képként kezeli, és nem html oldalként, ami fölé muszáj fejlécet is tenni. Ott a Gugli fotóalbuma például, az korlátlan, ingyenes, gyors.
__________________
Hódító * Queosia
Reply With Quote
The Following User Says Thank You to Ati For This Useful Post:
Sponsored Links
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 15:02.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Design partly based on Hódító's design by Grafinet Team Kft.

Contents and games copyright (c) 1999-2020 - Queosia, Hódító

Partnerek: Játékok, civ.hu