|
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. |
On March 30 2015 22:26 Acrofales wrote: Honestly, if you have no clue where to start when programming A*, you probably should be staying far away from studying CS...
1. As algorithms go, A* is a simple one. If you don't understand it, CS is not for you. 2. There are literally thousands of explanations of it, pseudocode implementations, and actual implementations in any programming language you can imagine. If you don't know how to find them, CS is not for you (or well, any other study, because some healthy dose of Google knowledge is necessary for most stuff nowadays)
"Only a sith deals in absolutes".
|
On March 31 2015 01:28 solidbebe wrote:Show nested quote +On March 31 2015 00:35 Prillan wrote:On March 30 2015 22:26 Acrofales wrote: Honestly, if you have no clue where to start when programming A*, you probably should be staying far away from studying CS...
1. As algorithms go, A* is a simple one. If you don't understand it, CS is not for you. 2. There are literally thousands of explanations of it, pseudocode implementations, and actual implementations in any programming language you can imagine. If you don't know how to find them, CS is not for you (or well, any other study, because some healthy dose of Google knowledge is necessary for most stuff nowadays) What the?! What kind of answer is that? You basically said: "If you don't know how to do it, you shouldn't try to learn it." What he actually said (or meant at least, and what I got from it): "If you don't know how to learn how to do it, you shouldn't do it". Which is generally a statement I agree with. Learn how to learn how to do it. That actually should be a course at every university.
|
On March 31 2015 02:47 spinesheath wrote:Show nested quote +On March 31 2015 01:28 solidbebe wrote:On March 31 2015 00:35 Prillan wrote:On March 30 2015 22:26 Acrofales wrote: Honestly, if you have no clue where to start when programming A*, you probably should be staying far away from studying CS...
1. As algorithms go, A* is a simple one. If you don't understand it, CS is not for you. 2. There are literally thousands of explanations of it, pseudocode implementations, and actual implementations in any programming language you can imagine. If you don't know how to find them, CS is not for you (or well, any other study, because some healthy dose of Google knowledge is necessary for most stuff nowadays) What the?! What kind of answer is that? You basically said: "If you don't know how to do it, you shouldn't try to learn it." What he actually said (or meant at least, and what I got from it): "If you don't know how to learn how to do it, you shouldn't do it". Which is generally a statement I agree with. Learn how to learn how to do it. That actually should be a course at every university.
Course 101: Google-Fu basics Course 102: Stack overflow for beginners
After that, you are basically a full programmer :p
|
Try doing Dijkstra on paper to get the hang of it..It's a very obvious and intuitive algorithm. Then move on to A*, which is very similar but using the heuristic function to select the next node.
|
On March 31 2015 02:39 darkness wrote:Show nested quote +On March 30 2015 22:26 Acrofales wrote: Honestly, if you have no clue where to start when programming A*, you probably should be staying far away from studying CS...
1. As algorithms go, A* is a simple one. If you don't understand it, CS is not for you. 2. There are literally thousands of explanations of it, pseudocode implementations, and actual implementations in any programming language you can imagine. If you don't know how to find them, CS is not for you (or well, any other study, because some healthy dose of Google knowledge is necessary for most stuff nowadays) "Only a sith deals in absolutes".
Oh, the irony..
|
|
On March 31 2015 07:04 Khalum wrote:Show nested quote +On March 31 2015 02:39 darkness wrote:On March 30 2015 22:26 Acrofales wrote: Honestly, if you have no clue where to start when programming A*, you probably should be staying far away from studying CS...
1. As algorithms go, A* is a simple one. If you don't understand it, CS is not for you. 2. There are literally thousands of explanations of it, pseudocode implementations, and actual implementations in any programming language you can imagine. If you don't know how to find them, CS is not for you (or well, any other study, because some healthy dose of Google knowledge is necessary for most stuff nowadays) "Only a sith deals in absolutes". Oh, the irony..
What do you mean? Do you refer to my signature?
|
No like it's ironic to say only sith deals in absolutes because you're using "only" as well, implying you're sith.
|
Are you calling Obi-Wan a Sith!??! Gloves off, lets take this outside!!
|
I don't disagree with what you guys are saying about my asking for help, just so we're clear its not so much that I don't understand the algorithm but that im having issues implementing in the manner required of my assignment. As I said I thought it could be a bit of a reach anyway in that it was pretty close to asking for my work to be done for me (though that wasn't my intention) so don't worry about it, continue thread
|
There's a lot of moments when I ask a question and then I ask myself or my friend asks me, why don't I just search the answer? And then I'm like, yeah why didn't I..... and I think you'll have a lot of trouble programming if you can't do most of the searching yourself.
But then there's also the problem where I don't ask my friends for help enough, because a lot of the time the problems can and should be solved by yourself because that's how you actually learn. It's really hard to differentiate being blocked by self-solvable problems or not, and you'll see a lot of times inexperienced programmers ask for help way too early. And as an inexperienced programmer myself it's extremely hard to see when that's the case or not until way later.
It's actually a cool lesson to learn when you're with a good team with an enterprise level code base. How do you code your code in a way that's not only readable, committable, but also searchable. That's why you have for example, not naming conventions but purposeful naming conventions. That's why you have comments. So the purpose is expressed if someone needs to search for a code example. When you have a problem that you can just search through the code base immediately for a keyword and find a perfect example, you thank the hell out of whoever coded that for making your life so easy. Google is smarter, but you have to weave your query in a specific way once your problem is non-trivial, whereas code search is pretty much spot on. I think Github/any public code hosting site would have a lot of direct code search potential even if they probably have way too much code to search quickly.
Sorry I like blogging so sometimes there's no real reason I type stuff here except to say programmy stuff :p
I also find it annoying when someone treats me like a junior when I feel like I know what I'm doing XD I know it's hard to tell though because I complain about problems a lot. I feel like I complain a lot though because I don't have anywhere else to vent at my code.
|
As a newbie programmer with no prior knowledge in programming before entering university, this applies alot to me and my peers.. I've been having problems thinking of how to implement solutions and even if i know how it works it just boggles my mind how to implement them.
|
On March 31 2015 16:04 Blisse wrote: There's a lot of moments when I ask a question and then I ask myself or my friend asks me, why don't I just search the answer? And then I'm like, yeah why didn't I..... and I think you'll have a lot of trouble programming if you can't do most of the searching yourself.
But then there's also the problem where I don't ask my friends for help enough, because a lot of the time the problems can and should be solved by yourself because that's how you actually learn. It's really hard to differentiate being blocked by self-solvable problems or not, and you'll see a lot of times inexperienced programmers ask for help way too early. And as an inexperienced programmer myself it's extremely hard to see when that's the case or not until way later.
Yeah, I'm still in school, but that's something I've had a hard time with figuring out - at what point do you stop trying to figure it all out on your own and ask someone/google to help move things along? I always end up feeling like I'm cheating myself out of something important if I don't get there completely on my own, like I am not learning as thoroughly as I would if I had struggled along for hours and hours on my own. At the same time I know that's probably an unrealistic way of thinking, and it's often not practical to work that way. Hopefully sometime soon I'll figure out the balance.
|
On March 31 2015 16:45 GwSC wrote:Show nested quote +On March 31 2015 16:04 Blisse wrote: There's a lot of moments when I ask a question and then I ask myself or my friend asks me, why don't I just search the answer? And then I'm like, yeah why didn't I..... and I think you'll have a lot of trouble programming if you can't do most of the searching yourself.
But then there's also the problem where I don't ask my friends for help enough, because a lot of the time the problems can and should be solved by yourself because that's how you actually learn. It's really hard to differentiate being blocked by self-solvable problems or not, and you'll see a lot of times inexperienced programmers ask for help way too early. And as an inexperienced programmer myself it's extremely hard to see when that's the case or not until way later.
Yeah, I'm still in school, but that's something I've had a hard time with figuring out - at what point do you stop trying to figure it all out on your own and ask someone/google to help move things along? I always end up feeling like I'm cheating myself out of something important if I don't get there completely on my own, like I am not learning as thoroughly as I would if I had struggled along for hours and hours on my own. At the same time I know that's probably an unrealistic way of thinking, and it's often not practical to work that way. Hopefully sometime soon I'll figure out the balance.
The thing is not to just google the solution, it is googling the best solution and then implementing it the right way.
|
On March 31 2015 14:51 Blisse wrote: No like it's ironic to say only sith deals in absolutes because you're using "only" as well, implying you're sith.
Ah, thanks for clarifying. I didn't expect quote to be challenged. 
On March 31 2015 16:45 GwSC wrote:Show nested quote +On March 31 2015 16:04 Blisse wrote: There's a lot of moments when I ask a question and then I ask myself or my friend asks me, why don't I just search the answer? And then I'm like, yeah why didn't I..... and I think you'll have a lot of trouble programming if you can't do most of the searching yourself.
But then there's also the problem where I don't ask my friends for help enough, because a lot of the time the problems can and should be solved by yourself because that's how you actually learn. It's really hard to differentiate being blocked by self-solvable problems or not, and you'll see a lot of times inexperienced programmers ask for help way too early. And as an inexperienced programmer myself it's extremely hard to see when that's the case or not until way later.
Yeah, I'm still in school, but that's something I've had a hard time with figuring out - at what point do you stop trying to figure it all out on your own and ask someone/google to help move things along? I always end up feeling like I'm cheating myself out of something important if I don't get there completely on my own, like I am not learning as thoroughly as I would if I had struggled along for hours and hours on my own. At the same time I know that's probably an unrealistic way of thinking, and it's often not practical to work that way. Hopefully sometime soon I'll figure out the balance.
When you have little or no experience, google is that necessary substitute. Once you're an 'expert' at a topic, you may go without google.
|
I guess that even if you're an expert you'll be using google from time to time just to double-check your solution 
I remember that some of the questions during my job interview went along the lines of:
"How good are you with googling?" and "You're not a stranger to StackOverflow, are you?"
|
On March 31 2015 15:42 JD. wrote: I don't disagree with what you guys are saying about my asking for help, just so we're clear its not so much that I don't understand the algorithm but that im having issues implementing in the manner required of my assignment. As I said I thought it could be a bit of a reach anyway in that it was pretty close to asking for my work to be done for me (though that wasn't my intention) so don't worry about it, continue thread
I may have been a bit harsh in my originl post, but there's a reason this type of question doesn't get answered on stack overflow. And only part of it is that the community is not there to do your homework for you.
If you know how A* works, can you write out a pseudocode algorithm for it? If you can, then where in that algorithm is it that you are getting stuck when implementing it in java?
As someone said earlier: can you implement Dijkstra's algorithm? That is a pretty good starting point to modify. All you need to change are the method for picking what node to expand, and the end condition (lots of people forget that the end condition for Dijkstra is simpler).
Also, what kind of datastructure are you using for your graph?
|
On March 31 2015 18:16 Manit0u wrote:I guess that even if you're an expert you'll be using google from time to time just to double-check your solution  I remember that some of the questions during my job interview went along the lines of: "How good are you with googling?" and "You're not a stranger to StackOverflow, are you?" Haha... I had one this year that was just 'so tell us what kind of resources you used to learn about X', stackoverflow was pretty high up on that list :D
|
On March 30 2015 22:26 Acrofales wrote: Honestly, if you have no clue where to start when programming A*, you probably should be staying far away from studying CS...
1. As algorithms go, A* is a simple one. If you don't understand it, CS is not for you. 2. There are literally thousands of explanations of it, pseudocode implementations, and actual implementations in any programming language you can imagine. If you don't know how to find them, CS is not for you (or well, any other study, because some healthy dose of Google knowledge is necessary for most stuff nowadays)
Probably around 80-90 percent of the students that started studying CS in the university I went to (and later taught in basic programming courses) didn't have any prior background on programming. Should they just quit right away?
If that's a normal level assignment to implement the algorithm with Java and you have no idea where to start it's not a good sign, but it doesn't mean that you couldn't learn if you put enough effort to it or learn how to learn. Telling someone they should stay away from the field because they don't know how to solve that problem is ridiculous.
|
On March 12 2015 08:02 Zocat wrote: Do you need to find the best solution (global optima) or a "good enough" solution (local optima)?
What is the rough user/job size? Hundreds, thousands, millions, unlimited?
Adding / removing rules depends on your rule complexity. Changing a rule can be easy (not working 3 days in a row), but adding a completely new rule might be complicated (user X doesn't like to do job Y, but he can do it if necessary).
If you don't need the global optima I would look into genetic algorithms. The fitness function sounds easy enough to implement with your set of rules and hard-rule breaking offspring can die off immediately. Thanks for your suggesting of using a genetic algorithm. It works fantastically. At first it was slow - would take 15-30 minutes. But after doing some researching and implementing elitism, it now solves it in seconds, sometimes even less than a second. Thanks!
|
|
|
|